Я работаю над графическим приложением и получил GL_INVALID_OPERATION
после glPopAttrib ()
. Предсказание ответа «Похоже, вы вызываете glPopAttrib ()
в блоке glBegin / glEnd
», пожалуйста, посмотрите этот журнал, который я сделал с помощью GLIntercept.
/* tons of wglGetProcAddress* */
wglGetProcAddress("glEndOcclusionQueryNV")=087C9B10
wglGetProcAddress("glBeginTransformFeedbackN...")=087C9ED0
wglGetProcAddress("glEndTransformFeedbackNV")=087C9F00
glPushAttrib(GL_VIEWPORT_BIT)
glPushAttrib(GL_COLOR_BUFFER_BIT)
glPushAttrib(GL_COLOR_BUFFER_BIT)
glPopAttrib()
glPopAttrib() glGetError() = GL_INVALID_OPERATION # <---- THIS
glPopAttrib()
glPushAttrib(GL_VIEWPORT_BIT)
glPushAttrib(GL_COLOR_BUFFER_BIT)
glPushAttrib(GL_COLOR_BUFFER_BIT)
glPopAttrib()
glPushAttrib(GL_POINT_BIT | GL_LINE_BIT | GL_COLOR_BUFFER_BIT)
glPopAttrib()
glPopAttrib()
glPopAttrib()
glPushAttrib(GL_VIEWPORT_BIT)
glPushAttrib(GL_COLOR_BUFFER_BIT)
glPushAttrib(GL_COLOR_BUFFER_BIT)
glPopAttrib()
glPopAttrib()
glPopAttrib()
/* and so on */
Нет вызовы glBegin / glEnd
выполняются до вызывающего ошибку glPopAttrib ()
. (Я использовал команду findstr для фильтрации журнала).
Ошибка появляется только один раз, ни одна такая (или другие) ошибки больше не возникает во время выполнения кода. У меня есть подозрение, что я должен вызвать какую-то функцию до glPushAttrib (GL_VIEWPORT_BIT)
или чего-то в этом роде.