【问题标题】:How to free memory allocated by LWJGL如何释放 LWJGL 分配的内存
【发布时间】:2020-07-10 12:23:39
【问题描述】:

我的带有 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);
}

【问题讨论】:

    标签: java memory lwjgl


    【解决方案1】:

    在您的代码中没有明确可释放的内容。但可能有两个要素:

    1. 您确定释放对象网格使用的资源和缓冲区吗?
    2. 您是否在使用后删除了着色器程序?

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-11-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-12-09
      • 1970-01-01
      • 2011-05-13
      • 2015-07-30
      相关资源
      最近更新 更多