Я использую многопоточный OpenGL для визуализации в окно. Если я нажму кнопку, модель будет повернута на 5 секунд. После этого поворота я распечатываю FPS. В остальное время OpenGL ничего не делает. Модель не будет изменяться со временем, и все потоки будут приостановлены во время вращения. В начале у меня есть 240FPS после 30 раз с помощью этой кнопки (а также до тех пор, пока все не закончится) мой FPS упадет до 30FPS (выглядит очень медленно).SwapBuffers медленно замедляются с течением времени
Моя петля выглядит так, я также пробовал другие комбинации, такие как удаление glFlush и glFinish.
pDriverOpenGL->Lock();
pDriverOpenGL->Present(this); //drawcall
glFlush();
glFinish();
//glFlush();
SwapBuffers(hdc);
pDriverOpenGL->Unlock();
Я пропустил какую-то команду? Я также читал, что команды GL укладываются в буфер до вызова glFlush. Это правда? Может ли кто-нибудь рассказать мне, как работает этот стек? и как я могу его очистить?
Кстати, я использую Windows 10, AMD Radeon R7 M370
Спасибо заранее!
Этот код недостаточно, чтобы рассказать вам, что не так. Нам нужен призыв розыгрыша, а также блокировка и разблокировка. У вас могут быть утечки или медленные операции. – Brandon
Спасибо за ваш быстрый ответ! с GPU-Z TechPowerUp Я проверил память GPU, а также TaskManager не меняет память ... так что утечки памяти нет. Я не могу распечатать код здесь, он очень велик и нелегко входить ... (это готовый проект, который работает с DirectX 11, и я должен написать драйвер OpenGL для работы с Linus OSX ...) – Thomas
Но, может быть, вы знаете больше о каком-то стекебуфере для хранения команд openGL до вызова glFlush. Это мне очень помогло! Благодаря! – Thomas