OpenGL纹理随机未显示

时间:2010-04-27 19:02:48

标签: c++ opengl textures

我的 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

有什么想法吗?这让我发疯了......

2 个答案:

答案 0 :(得分:2)

发现:)在复制构造函数中未正确重新分配GLint texture成员。

然而,我仍然不明白为什么它有时会起作用......

答案 1 :(得分:1)

您使用的代码似乎有效。你有......

  • 尝试使用简单的四边形而不是二次曲面
  • 确保image已正确填写
  • 确认tex未在其他地方更改
  • 确保没有其他程序同时使用opengl
  • 重新启动计算机;)