【发布时间】:2013-09-06 15:48:44
【问题描述】:
我的一个纹理在 OpenGL 上的行为很糟糕。
删除纹理后,我创建了一个新的,它生成的tex编号与以前相同,但纹理不正确。而且 glGetError 在每一行都返回 0 !我试图在 glDeleteTextures 之后添加 glFlush/glFinish 但它没有改变任何东西!纹理编号似乎锁定在某个地方...为什么?
它是单线程的,这里的行为:
//myTexture == 24 is loaded and works correctly
GLboolean bIsTexture = glIsTexture(myTexture); //returns 1 = > ok
glDeleteTextures(1,&myTexture);
bIsTexture = glIsTexture(myTexture); //returns 0 => ok
//Let's create a new texture
glGenTextures(1,&myTexture);//myTexture == 24 (as the glDelete was ok)
glBindTexture(GL_TEXTURE_2D,myTexture);
bIsTexture = glIsTexture(myTexture); //returns 0 => FAILS
【问题讨论】:
-
这是我复制/粘贴的错误,现在可以了
-
仅供参考,为了测试这样的案例,在两次调用之间手动将 myTexture 设置为不同的值(可能是 max uint)可能是个好主意,以确保 myTexture 确实设置为相同第二次通话中的号码,而不是“什么都不做”。