OpenGL纹理随机未显示

8

我在我的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);

现在:它能够完美地运行十次中有九次,但有时纹理不会显示(四面体保持白色)。

图像已正确加载,因此问题应该出在OpenGL上。我也尝试过使用几种不同的图像。始终是 GL_NO_ERROR

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


有点儿傻,但在它不加载的时候,如果你最小化然后最大化窗口,它会出现吗? - Robb
不,即使我最小化/最大化窗口,它也无法加载。 - TheDude
3
你能在另一台电脑上或使用不同的驱动程序进行测试吗? - Maurice Gilden
“纹理未显示”是指当您重新启动应用程序时吗? - Xavier Ho
2个回答

2

找到了 :) 这是因为在复制构造函数中,GLint texture成员没有正确重新分配。

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


1

您正在使用的代码似乎是有效的。您是否...

  • 尝试使用简单的四边形而不是四面体?
  • 确保image已正确填充?
  • 验证tex在其他地方没有被更改?
  • 确保没有其他程序同时使用OpenGL?
  • 重新启动计算机;)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接