我有一个Java OpenGL应用程序 - 由JOGL支持,运行在Linux slitaz 3.2.53-slitaz#4 SMP Europe 2014 i686 GNU / Linux。
OpenGL详细信息:
运行loading&删除GPU上的纹理后,它会在一定时间后崩溃 - 与负载频率成正比。卸载,更多负载更快崩溃等。
给出的错误:intel_do_flush_locked失败:设备上没有剩余空间
在这种情况下我是:
搜索后我发现源代码表明glDeleteTextures不保证纹理使用的VRAM的释放,只是glGenTextures返回的ID,因此可以重复使用。例如: https://gamedev.stackexchange.com/questions/63629/how-to-deallocate-release-delete-of-a-gltexstorage2d
但我也发现了报道Mesa驱动程序中的潜在/错误的文章。报告相同异常的Lunix版本:intel_do_flush_locked失败:设备上没有剩余空间
总之,我在问:
感谢。
答案 0 :(得分:0)
确实存在问题,正如Reto Koradi在评论中通过他对OpenGL es 1.1 - android - does gl.glDeleteTextures free video memory?的答案所建议的那样,没有分离纹理&在删除之前从帧缓冲区渲染缓冲区将它们保留在内存中。
对于使用纹理& /或渲染缓冲区创建屏幕帧缓冲区的任何其他人,请确保先将它们分离! E.g: