glGenQueries всегда возвращает объекты без запроса, glBeginQuery возвращает ошибку

Я пытаюсь создать запрос окклюзии, используя openGL 3.3, используя GLFW, GLEW

функция загрузки:

uint32_t glQueryID;
glGenQueries(1, &glQueryID);
if (glIsQuery(glQueryID)) //just for testing its always false !
{
... it must be always true !?!
}

функция рисования:

glBeginQuery(GL_ANY_SAMPLES_PASSED, glQueryID);
glGetError();// 1282 invalid operation

Однако все мои другие glCalls работали без ошибок

Работает на Mac OS X, Intel HD 4000

0

Решение

Из документации glIsQuery:

glIsQuery возвращает GL_TRUE, если id в данный момент является именем объекта запроса. Если id равен нулю или является ненулевым значением, которое в данный момент не является именем объекта запроса, или если возникает ошибка, glIsQuery возвращает GL_FALSE.

Имя, возвращаемое glGenQueries, но еще не связанное с объектом запроса путем вызова glBeginQuery, не является именем объекта запроса.

Так как вы звоните glIsQuery перед передачей ему объекта запроса (например, путем вызова glBeginQuery), возвращаемое значение должно быть GL_FALSE,

2

Другие решения

Проблема была решена путем инициализации запроса с последующим пустым началом / концом запроса

glGenQueries(1, &glQueryID);
glBeginQuery(GL_SAMPLES_PASSED, glQueryID);
glEndQuery(GL_SAMPLES_PASSED);

это исправит ошибку 1282 (недопустимая операция) при рисовании позже

0

По вопросам рекламы [email protected]