我的 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);
现在:它十分完美地工作9次,但有时纹理没有显示(二次曲线保持白色)。
image
已正确加载,因此问题应该是OpenGL。我也尝试过几种不同的图像。始终GL_NO_ERROR
。
有什么想法吗?这让我发疯了......
答案 0 :(得分:2)
发现:)在复制构造函数中未正确重新分配GLint texture
成员。
然而,我仍然不明白为什么它有时会起作用......
答案 1 :(得分:1)
您使用的代码似乎有效。你有......
image
已正确填写tex
未在其他地方更改