OpenGL纹理随机未显示
Posted
技术标签:
【中文标题】OpenGL纹理随机未显示【英文标题】:OpenGL texture randomly not shown 【发布时间】:2010-04-27 19:02:47 【问题描述】:我的 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);
现在:10 次中有 9 次完美运行,但有时纹理未显示(二次曲面保持白色)。
image
已正确加载,所以应该是 OpenGL 的问题。我也尝试了几种不同的图像。总是GL_NO_ERROR
。
有什么想法吗?快把我逼疯了……
【问题讨论】:
有点傻但是在它不加载的时候,如果你最小化然后最大化窗口,它会出现吗? 不,它不会加载,即使我最小化/最大化。 你能在不同的电脑或不同的驱动程序上测试它吗? “未显示纹理”是指重新启动应用程序时吗? 【参考方案1】:找到 :) 在复制构造函数中未正确重新分配的是 GLint texture
成员。
但是,我仍然不明白为什么它有时会起作用......
【讨论】:
【参考方案2】:您使用的代码似乎有效。你有没有……
尝试使用简单的四边形而不是二边形 确保image
填写正确
已验证 tex
未在其他地方更改
确保没有其他程序同时使用 opengl
重新启动您的计算机;)
【讨论】:
以上是关于OpenGL纹理随机未显示的主要内容,如果未能解决你的问题,请参考以下文章