Я просто читал документацию по DirectX и обнаружил кое-что интересное на странице для IDirect3DDevice9 :: BeginScene :
Чтобы включить максимальный параллелизм между
процессор и графический ускоритель,
выгодно звонить
IDirect3DDevice9 :: EndScene до
перед вызовом подарка, насколько это возможно.
Я привык писать свой игровой цикл для обработки ввода и тому подобного, а затем рисовать. У меня есть это назад? Может быть, игровой цикл должен быть более похож на это: (полупсевдокод, очевидно)
while(running) {
d3ddev->Clear(...);
d3ddev->BeginScene();
// draw things
d3ddev->EndScene();
// handle input
// do any other processing
// play sounds, etc.
d3ddev->Present(NULL, NULL, NULL, NULL);
}
В соответствии с этим предложением документации, этот цикл будет "включать максимальный параллелизм".
Это обычно делается? Есть ли какие-либо недостатки в заказе игрового цикла, как это? Я не вижу реальной проблемы с ним после первой итерации ... И я знаю, что лучший способ узнать фактическое увеличение скорости чего-то подобного - это на самом деле сравнить его, но кто-нибудь еще это уже пробовал, и можете ли вы засвидетельствовать любое реальное увеличение скорости?