Я пытаюсь создать запрос окклюзии, используя 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
Из документации glIsQuery
:
glIsQuery возвращает GL_TRUE, если id в данный момент является именем объекта запроса. Если id равен нулю или является ненулевым значением, которое в данный момент не является именем объекта запроса, или если возникает ошибка, glIsQuery возвращает GL_FALSE.
Имя, возвращаемое glGenQueries, но еще не связанное с объектом запроса путем вызова glBeginQuery, не является именем объекта запроса.
Так как вы звоните glIsQuery
перед передачей ему объекта запроса (например, путем вызова glBeginQuery
), возвращаемое значение должно быть GL_FALSE
,
Проблема была решена путем инициализации запроса с последующим пустым началом / концом запроса
glGenQueries(1, &glQueryID);
glBeginQuery(GL_SAMPLES_PASSED, glQueryID);
glEndQuery(GL_SAMPLES_PASSED);
это исправит ошибку 1282 (недопустимая операция) при рисовании позже