【发布时间】:2013-11-15 04:10:59
【问题描述】:
我有一个庞大的 2D 纹理列表,每次加载地图时都会加载这些纹理(取决于地图及其内容)。我正在寻找一种方法来解除绑定纹理以减少内存使用。绑定纹理功能完美无缺,只是看不到任何取消绑定某些或全部 id 的功能。
【问题讨论】:
我有一个庞大的 2D 纹理列表,每次加载地图时都会加载这些纹理(取决于地图及其内容)。我正在寻找一种方法来解除绑定纹理以减少内存使用。绑定纹理功能完美无缺,只是看不到任何取消绑定某些或全部 id 的功能。
【问题讨论】:
试试
glDeleteTextures(1, &texID)
这应该会从内存中删除纹理。在调用之前,请务必通过简单地调用来取消绑定当前纹理:
glBindTexture(target, 0) // << default texture object
【讨论】:
<< default texture object 你的意思是把我的纹理ID 代替0?另一件事是我使用的是 C#,而不是 C++,但它具有这些功能。
0 表示 OGL 将取消绑定您的纹理 ID。这样做是为了不删除活动纹理(例如,在绘制时使用的纹理)。请在那里传递0,而不是你的textureID。