我在代码(C)的开头设置了许多纹理。每个纹理都是正确生成的(没有错误),我将纹理名称作为GLuint存储在图像结构中供以后使用。 在程序结束时,GLuint将被传递回GLdeleteTextures()并退出程序。
问题是我第一次尝试使用GLDeleteTextures()时一直出错。对GLDeleteTextures()的所有后续调用都不会产生错误。
错误(来自gluErrorString)声明'无效的枚举'。
额外信息。 通过调用glBindTexture(GL_TEXTURE_2D,NULL)删除之前所有纹理都未绑定。 所有纹理名称(GLuints)在创建时都会得到验证,它们与删除时使用的名称相同。 删除时纹理的顺序无关紧要,这是删除第一个问题的调用。
目前的解决方法。 我发现在第一个纹理上重复glDeleteTextures(),例如......
glDeleteTextures(1,&MyImage->texName); // Will produce 'invalid enumerant'
glDeleteTextures(1,&MyImage->texName); // This time it will work!
我通过在第二次删除后生成新纹理并比较纹理名称来仔细检查上面的代码。第二次调用后,纹理确实被删除,并正确地放回系统。
我有红皮书,纹理删除有点模糊。是否有一组明确的步骤必须正确删除纹理?
答案 0 :(得分:0)
错误与glDeleteTextures()
无关,而是来自glEnable(GL_ALPHA)
。