Я пытаюсь ускорить рисование полноэкранной текстуры, которая меняет каждый кадр. В моей системе я могу получить около 1000 FPS с помощью GDI и BitBlt (), но я думал, что могу улучшить производительность, используя Direct3D и динамические текстуры. Вместо этого я получаю только около 250 кадров в секунду.
Я использую Mac Pro с ATI HD 4870 с текущими драйверами.
Я пробовал использовать динамические текстуры, и это дает мне небольшой выигрыш (~ 15FPS), и я пробовал использовать цепочку текстур, чтобы избежать срывов конвейера, и это не дало никакого эффекта.
Я немного огляделся, и там очень мало информации об использовании таким образом динамических текстур.
Я упустил что-то фундаментальное?
Настройка устройства:
pparams.BackBufferCount = 1; pparams.SwapEffect = D3DSWAPEFFECT_DISCARD; pparams.PresentationInterval = D3DPRESENT_INTERVAL_IMMEDIATE;
Создание текстуры:
device->CreateTexture(width, height, 1, D3DUSAGE_DYNAMIC, D3DFMT_A8R8G8B8, D3DPOOL_DEFAULT, &texture, NULL);
Обновление текстуры:
texture->LockRect(0, &locked, NULL, D3DLOCK_DISCARD); ... write texture data texture->UnlockRect(0); device->DrawPrimitiveUP(D3DPT_TRIANGLEFAN, 2, vertices, sizeof(*vertices)); ...
Вы можете получить код незавершенной работы со страницы http://www.libsdl.org/tmp/SDL-1.3.zip
Спасибо!