Этот код не будет работать. Команды OpenGL по определению предполагаются асинхронными по поведению. Команды GL должны полностью записывать или читать любые параметры до их завершения. Но вне этого все ставки сняты.
Время любого отдельного вызова glDraw*
покажет вам только, сколько времени потребуется для выполнения этого вызова функции. В нем ничего не говорится о том, сколько времени занимает рендеринг.
A доступно более подробное обсуждение этой темы .
Положительным моментом является то, что вы можете время рендеринга, но вы должны сделать это способом OpenGL. ARB_timer_query позволяет вам сделать именно это: время, которое требуется командам OpenGL для завершения , а не просто для передачи OpenGL. Это расширение является основным в OpenGL 3.3, и оно довольно широко доступно для различных уровней оборудования. Практически любой графический процессор, который все еще поддерживается его владельцем, реализует это.