fog*_*bit 10 c++ windows opengl
我正在研究一些图形应用程序,我得到了一个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 */
Run Code Online (Sandbox Code Playgroud)
glBegin/glEnd在导致错误之前不会进行任何调用glPopAttrib().(我使用findstr commad来过滤日志).
该错误仅出现一次,在代码执行期间不再出现此类(或其他)错误.我有一种怀疑,我应该先调用一些函数glPushAttrib(GL_VIEWPORT_BIT)或之前的东西.
有趣的问题。让我想到..
COLOR_BUFFER_BIT可能发生的情况是,当从窗口系统获取 OpenGL 上下文时,与 相关的一些状态变量没有用正确的值进行初始化。当您执行 a 时glPushAttrib,那些(可能)不正确的值被保存,当属性被弹出时,不正确的值被恢复 - 导致无效操作?这听起来符合逻辑吗?
| 归档时间: |
|
| 查看次数: |
870 次 |
| 最近记录: |