Код: Выделить всё
CollectDataBegin();
/*all drawing operations with OpenGL*/
CollectDataEnd();
Код: Выделить всё
void RenderingInfo::CollectDataBegin()
{
//FPS begin
available = 0;
GLenum eError;
// UPDATE 1 START
if (!bQueryGenerated){
glGenQueries(1, queries);
bQueryGenerated = true;
}
// UPDATE 1 END
//GL_NO_ERROR from glGetError();
glBeginQuery(GL_TIME_ELAPSED, queries[0]);
//GL_OUT_OF_MEMORY error from glGetError();
//FPS end
}
void RenderingInfo::CollectDataEnd()
{
//FPS begin
glEndQuery(GL_TIME_ELAPSED);
iFramesCount++;
if (iFramesCount == 20)
{
iFramesCount = 0;
while (!available) {
glGetQueryObjectiv(queries[0], GL_QUERY_RESULT_AVAILABLE, &available);
}
glGetQueryObjectui64v(queries[0], GL_QUERY_RESULT, &timeElapsed);
float jeb = static_cast(timeElapsed) / std::pow(10, 9);
xRenderStats.fFPS = static_cast(1.0 / jeb);
sFPS = std::to_string(xRenderStats.fFPS);
// UPDATE 1 START
if (bQueryGenerated){
glDeleteQueries(1, queries);
bQueryGenerated = false;
}
// UPDATE 1 END
}
}
Код: Выделить всё
GLuint queries[] = {0};
GLint available = 0;
GLuint64 timeElapsed;
int iFramesCount = 0;
bool bQueryGenerated = false; //UPADTE 1
Но после перехода на встроенную графику Intel HD Graphics 4600 Я получаю GL_OUT_OF_MEMORY после вызова glBeginQuery(). Интересно то, что я получаю эту ошибку не сразу, а после нескольких вызовов glBeginQuery().
Мне не удалось найти любые сообщения, связанные с этим вопросом, поэтому я прошу вашей помощи в решении этой проблемы.
ОБНОВЛЕНИЕ 1:
Я изменил свой код в соответствии с советами @Ike , но я все равно получаю ошибку GL_OUT_OF_MEMORY.
Подробнее здесь: https://stackoverflow.com/questions/336 ... mory-error