为什么在调用glLoadIdentity()之后出现1282错误?

问题描述 投票:1回答:2

CODE:

 int err = glGetError();  // err = 0

 glMatrixMode(GL_TEXTURE);
 err = glGetError();      // err = 0

 glLoadIdentity();
 err = glGetError();      // err = 1282

GL_INVALID_OPERATION当前状态下不允许执行指定的操作。有问题的命令将被忽略,并且除了设置错误标志外没有其他副作用。

我收到错误时,使用gDEBugger检查openGL的状态。

GL_CURRENT_RASTER_POSITION_VALID=TRUE
GL_CURRENT_RASTER_TEXTURE_COORDS=N/A
GL_CURRENT_TEXTURE_COORDS=N/A
GL_PROJECTION_STACK_DEPTH=1
GL_TEXTURE_1D=FALSE
GL_TEXTURE_2D=FALSE
GL_TEXTURE_GEN_Q=N/A
GL_TEXTURE_GEN_R=N/A
GL_TEXTURE_GEN_S=N/A
GL_TEXTURE_GEN_T=N/A
GL_TEXTURE_MATRIX=N/A
GL_TEXTURE_STACK_DEPTH=N/A
GL_TEXTURE_BINDING_1D=0
GL_TEXTURE_BINDING_2D=0
GL_TEXTURE_BINDING_3D=0
GL_TEXTURE_ENV_MODE=GL_MODULATE
GL_TEXTURE_ENV_COLOR={0, 0, 0, 0}
GL_ACTIVE_TEXTURE=GL_TEXTURE11
GL_CLIENT_ACTIVE_TEXTURE=GL_TEXTURE0
GL_MAX_TEXTURE_UNITS=4
GL_ACTIVE_TEXTURE_ARB=GL_TEXTURE11
GL_CLIENT_ACTIVE_TEXTURE_ARB=GL_TEXTURE0
GL_MAX_TEXTURE_UNITS_ARB=4

我不知道哪里错了。为什么不能不允许简单操作?

c opengl 3d glsl
2个回答
2
投票

从文档中:


0
投票

立即模式以及OpenGL方面的矩阵处理已被弃用。即使使用glMatrixMode,也应该出现相同的错误。使用wglCreateContextAttribsARB切换到OpenGL 2.1版对我来说很有效,尽管我已经读过评论说不能保证它将来会继续工作。您必须立即开始进行自己的矩阵演算和VBO。

© www.soinside.com 2019 - 2024. All rights reserved.