sta*_*oat 5 opengl memory-leaks
我正在尝试编写一个类来进行片段着色器链接,使用帧缓冲对象渲染到纹理着色器着色器,然后使用片段着色器等将该纹理渲染到另一个纹理等.
我正在尝试处理内存泄漏现在,当我调整窗口大小并删除/重新分配我正在使用的纹理时,纹理没有被正确删除.
这是一段代码:
//Allocate first texture
glGenTextures( 1, &texIds[0] );
glBindTexture( GL_TEXTURE_2D, texIds[0] );
glTexImage2D( GL_TEXTURE_2D, 0, GL_RGBA8, screenX, screenY, 0, GL_BGRA, GL_UNSIGNED_BYTE, NULL );
//Allocate second texture
glGenTextures( 1, &texIds[1] );
glBindTexture( GL_TEXTURE_2D, texIds[1] );
glTexImage2D( GL_TEXTURE_2D, 0, GL_RGBA8, screenX, screenY, 0, GL_BGRA, GL_UNSIGNED_BYTE, NULL );
//Try to free first texture -- ALWAYS FAILS
glDeleteTextures( 1, &texIds[0] );
//Try to free second texture
glDeleteTextures( 1, &texIds[1] );
Run Code Online (Sandbox Code Playgroud)
当我使用gDEBugger运行它时,它告诉我"警告:调试程序删除不存在的纹理.纹理名称:1"当我尝试删除texIds [0]时.(我现在将它们放在数组中的原因是因为我曾经同时创建和释放它们,但是当你一次释放2个纹理时,它将在一个上静默失败并继续另一个).
如果我不创建texIds [1],我可以释放texIds [0],但是一旦我创建了第二个纹理,我就不能再释放我创建的第一个纹理了.有任何想法吗?
也许错误出现在 texIds 数组中。它是 GLUint 数组吗?
您可能会错误地将其声明为单词数组,因此在为 [1] 元素生成纹理时,从元素 [0] 获取的 uint 指针被破坏。
| 归档时间: |
|
| 查看次数: |
3875 次 |
| 最近记录: |