@Quad_Tree

Может ли OpenGL служить причиной утечки памяти?

Может ли данный метод быть причиной утечки памяти (увеличение количества потребляемой оперативной памяти) в приложении? При том, что я вызываю этот метод повторно.

public void updateVBO() {

        /** Creating VBO **/

        FloatBuffer vertexBuffer = BufferUtils.createFloatBuffer(79600 * 18);
        for (int height = 0; height < map.getHeight() - 1; height++) {

            for (int counter = 0; counter < map.getWidth(); counter++) {

                // Creating vertex buffer
                vertexBuffer.put((float)(vertex * Math.cos(point) * Math.cos(hpoint))).put((float) Math.sin(hpoint)).put((float)(vertex * Math.sin(point) * Math.cos(hpoint))); // a
                vertexBuffer.put((float)(vertex2 * Math.cos(point2) * Math.cos(hpoint))).put((float)Math.sin(hpoint)).put((float)(vertex2 * Math.sin(point2) * Math.cos(hpoint))); // b
                vertexBuffer.put((float)(vertex4 * Math.cos(point) * Math.cos(hpoint2))).put((float)Math.sin(hpoint2)).put((float)(vertex4 * Math.sin(point) * Math.cos(hpoint2))); // d

                vertexBuffer.put((float)(vertex2 * Math.cos(point2) * Math.cos(hpoint))).put((float)Math.sin(hpoint)).put((float)(vertex2 * Math.sin(point2) * Math.cos(hpoint))); // b
                vertexBuffer.put((float)(vertex3 * Math.cos(point2) * Math.cos(hpoint2))).put((float)Math.sin(hpoint2)).put((float)(vertex3 *Math.sin(point2) * Math.cos(hpoint2))); // c
                vertexBuffer.put((float)(vertex4 * Math.cos(point) * Math.cos(hpoint2))).put((float)Math.sin(hpoint2)).put((float)(vertex4 * Math.sin(point) * Math.cos(hpoint2))); // d

            }
        }
        vertexBuffer.flip();


        /** Creating normal buffer **/
        FloatBuffer normalBuffer = BufferUtils.createFloatBuffer(79600 * 18);
        for (int height = 0; height < map.getHeight() - 2; height++) {

            for (int counter = 0; counter < map.getWidth(); counter++) {
                normalBuffer.put(-normal1.getX()).put(-normal1.getY()).put(-normal1.getZ()); // a
                normalBuffer.put(-normal1.getX()).put(-normal1.getY()).put(-normal1.getZ()); // b
                normalBuffer.put(-normal1.getX()).put(-normal1.getY()).put(-normal1.getZ()); // d

                normalBuffer.put(-normal1.getX()).put(-normal1.getY()).put(-normal1.getZ()); // b
                normalBuffer.put(-normal1.getX()).put(-normal1.getY()).put(-normal1.getZ()); // c
                normalBuffer.put(-normal1.getX()).put(-normal1.getY()).put(-normal1.getZ()); // d
            }
        }
        normalBuffer.flip();

        vboVertexBuffer = glGenBuffers();
        glBindBuffer(GL_ARRAY_BUFFER, vboVertexBuffer);
        glBufferData(GL_ARRAY_BUFFER, vertexBuffer, GL_STATIC_DRAW);
        glBindBuffer(GL_ARRAY_BUFFER, 0);

        vboNormalBuffer = glGenBuffers();
        glBindBuffer(GL_ARRAY_BUFFER, vboNormalBuffer);
        glBufferData(GL_ARRAY_BUFFER, normalBuffer, GL_STATIC_DRAW);
        glBindBuffer(GL_ARRAY_BUFFER, 0);

        normalBuffer = null;
        vertexBuffer = null;
    }
  • Вопрос задан
  • 240 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
25 нояб. 2024, в 18:39
30000 руб./за проект
25 нояб. 2024, в 18:35
30000 руб./за проект
25 нояб. 2024, в 18:33
10000 руб./за проект