我的 C++ OpenGL 应用程序中有一个非常非常奇怪的问题 .
我只需加载纹理并将其应用于二次曲面:
glGenTextures(1, &tex);
glBindTexture(GL_TEXTURE_2D, tex);
glTexImage2D(GL_TEXTURE_2D, 0, 3, width, height, 0, GL_RGB, GL_UNSIGNED_BYTE, image);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
然后
glEnable(GL_TEXTURE_2D);
glBindTexture(GL_TEXTURE_2D, tex);
gluQuadricDrawStyle(quad,GLU_FILL);
gluQuadricTexture(quad,GL_TRUE);
gluCylinder(quad,1,0,2,20,1);
glDisable(GL_TEXTURE_2D);
现在:它在十分之一中完美地工作了九次,但有时纹理没有显示(二次曲线保持白色) .
image
已正确加载,因此问题应该是OpenGL . 我也尝试过几种不同的图像 . 总是 GL_NO_ERROR
.
任何的想法 ?这让我发疯了......
2 回答
发现:)这是在复制构造函数中未正确重新分配的
GLint texture
成员 .但是,我仍然不明白为什么它有时会起作用......
您使用的代码似乎有效 . 你有......
试图使用简单的四边形而不是二次曲面
确保
image
填写正确验证
tex
在其他地方未被更改确保没有其他程序同时使用opengl
重启了你的电脑;)