首页 文章

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);

现在:它在十分之一中完美地工作了九次,但有时纹理没有显示(二次曲线保持白色) .

image 已正确加载,因此问题应该是OpenGL . 我也尝试过几种不同的图像 . 总是 GL_NO_ERROR .

任何的想法 ?这让我发疯了......

2 回答

  • 1

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

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

  • 2

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

    • 试图使用简单的四边形而不是二次曲面

    • 确保 image 填写正确

    • 验证 tex 在其他地方未被更改

    • 确保没有其他程序同时使用opengl

    • 重启了你的电脑;)

相关问题