java - 如何释放 LWJGL 分配的内存
问题描述
我的带有 LWJGL 的 Java 应用程序无限期地分配内存,直到应用程序被删除。显然这部分代码导致了循环中的内存分配。是否缺少内存释放?求帮助。
public void renderMesh(GameObject object, Camera camera) {
GL30.glBindVertexArray(object.getMesh().getVAO());
GL30.glEnableVertexAttribArray(0);
GL30.glEnableVertexAttribArray(1);
GL30.glEnableVertexAttribArray(2);
GL15.glBindBuffer(GL15.GL_ELEMENT_ARRAY_BUFFER, object.getMesh().getIBO());
shader.bind();
shader.setUniform("model", Matrix4f.transform(object.getPosition(), object.getRotate(), object.getScale()));
shader.setUniform("view", Matrix4f.view(camera.getPosition(), camera.getRotation()));
shader.setUniform("projection", window.getProjectionMatrix());
GL13.glActiveTexture(GL13.GL_TEXTURE0);
GL13.glBindTexture(GL11.GL_TEXTURE_2D, object.getMesh().getMaterial(0).getTextureID());
GL11.glDrawElements(GL11.GL_TRIANGLES, object.getMesh().getIndices().length, GL11.GL_UNSIGNED_INT, 0);
shader.unbind();
GL15.glBindBuffer(GL15.GL_ELEMENT_ARRAY_BUFFER, 0);
GL30.glDisableVertexAttribArray(0);
GL30.glDisableVertexAttribArray(1);
GL30.glDisableVertexAttribArray(2);
GL30.glBindVertexArray(0);
}
解决方案
在您的代码中,没有任何内容可以明确释放。但可能有两个要素:
- 您确定释放对象网格使用的资源和缓冲区吗?
- 你在使用后是否删除了你的着色器程序?
推荐阅读
- sapui5 - sap.ui.table.Table 中的行动态绑定
- javascript - 如何使用 c# mvc 包装器向 kendo-chart 动态添加垂直线?
- excel - 以更有效的方式根据单元格值删除两个不同工作表上的行[VBA Excel]
- python - 我怎样才能制作一个循环,以便每次都将点添加到“用户”或“comp”?
- python - 使用 try 语句来处理 Heroku 上我的 python 工作进程上的对等错误导致的连接重置是否理想
- python - 处理 PRAW 中的错误(Reddit)
- python - 如何使用win32com python在excel单元格中添加下拉列表
- sql - 使用旧式连接进行左连接
- apache-spark - Pyspark 按顺序将多个 csv 文件读入数据帧
- postgresql - 如何用两个单引号字符替换一个单引号字符