gpt4 book ai didi

c - OpenGL GLDeleteTextures() 无法删除第一个纹理

转载 作者:太空宇宙 更新时间:2023-11-04 00:08:39 24 4
gpt4 key购买 nike

我在代码 (C) 的开头设置了一些纹理。每个纹理都正确生成(没有错误),我将纹理名称作为 GLuint 存储在图像结构中供以后使用。在程序结束时,GLuint 被传递回 GLdeleteTextures() 并且程序退出。

问题是我在第一次尝试使用 GLDeleteTextures() 时一直收到错误。对 GLDeleteTextures() 的所有后续调用都不会产生错误。

错误(来自 gluErrorString)指出“无效枚举”。

额外信息。在调用 glBindTexture(GL_TEXTURE_2D, NULL) 删除之前,所有纹理都是未绑定(bind)的。所有纹理名称 (GLuint) 在创建时都经过验证,它们与删除时使用的名称相同。删除时纹理的顺序无关紧要,问题是第一次调用删除。

当前的解决方法。我发现在第一个纹理上重复 glDeleteTextures() 是有效的,例如......

glDeleteTextures(1,&MyImage->texName);   // Will produce 'invalid enumerant'

glDeleteTextures(1,&MyImage->texName); // This time it will work!

我通过在第二次删除后生成新纹理并比较纹理名称来仔细检查上面的代码。第二次调用后纹理确实被删除并正确放回系统。

我有红皮书,它对纹理删除有点含糊。是否必须执行一组明确的步骤才能正确删除纹理?

最佳答案

错误不在于 glDeleteTextures() 而在于 glEnable(GL_ALPHA)

关于c - OpenGL GLDeleteTextures() 无法删除第一个纹理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12516975/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com