固定管线的glBegin/glVertex/glNormal/glTexCoord/glColor等函数后调用glGetError返回GL_INVALID_OPERATION

原因:glBegin和glEnd之间只能调用顶点属性等相关函数,glGetError不可调用,GL_INVALID_OPERATION指的是glGetError操作无效。

gBegin的文档说明如下(以微软的MSDN的GL1.1为例)
 

You can use only a subset of OpenGL functions between glBegin and glend. The functions you can use are:

glVertex

glColor

glIndex

glNormal

glTexCoord

glEvalCoord

glEvalPoint

glMaterial

glEdgeFlag

You can also use glCallList or glCallLists to execute display lists that include only the preceding functions. If any other OpenGL function is called between glBegin and glend, the error flag is set and the function is ignored.

### Code::Blocks配置OpenGLGLUT头文件路径解决方案 当遇到`no such file or directory`错误提示,表明编译器无法找到指定的GL/ GLUT头文件。这通常是因为未正确设置项目或全局的包含目录。 对于Code::Blocks而言,在项目的构建选项中添加正确的包含路径可以解决问题[^1]。具体操作是在Code::Blocks IDE内打开目标项目,通过菜单栏进入“Settings”下的“Compiler...”,切换到“Search directories”标签页,分别向“Compiler”部分添加指向本地安装位置的GL库以及GLUT库对应的include文件夹路径;如果存在链接问题,则还需在“Linker settings”的“Other linker options”里加入必要的参数如 `-lglut -lGLU -lGL` 或者根据实际情况调整。 另外一种可能是系统环境变量PATH缺失了对应图形开发包的位置信息,导致即使IDE内部设置了也依旧报错的情况发生。此时应该确认已将相关SDKs(Software Development Kit)按照官方文档说明完成部署,并适当更新系统的环境变量来辅助工具链定位资源[^2]。 最后值得注意的是不同操作系统下默认存储这些依赖项的地方有所区别,Linux用户可能需要借助包管理器安装mesa-common-dev等软件包以获取所需支持;Windows平台则往往伴随着特定版本Visual Studio Redistributable一起分发或者单独下载适用于MinGW-w64架构的预编译二进制形式。 ```cpp // 示例:简单的测试程序验证是否成功连接至OpenGLGLUT #include <GL/glut.h> void display() { glClear(GL_COLOR_BUFFER_BIT); glBegin(GL_TRIANGLES); glVertex3f(-0.5,-0.5,0.0); glVertex3f(0.5,0.0,0.0); glVertex3f(0.0,0.5,0.0); glEnd(); glutSwapBuffers(); } int main(int argc, char** argv){ glutInit(&argc, argv); glutCreateWindow("Test Window"); glutDisplayFunc(display); glutMainLoop(); } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值