Спасибо большое за очень хорошо написанный ответ. Это очень полезно.

помощь с пониманием VBOs. Я провел тонну исследований и нашел учебники по этому вопросу, но они все еще неясны для меня. У меня есть несколько вопросов:

Где должен быть создан VBO, и как мне его создать?

В настоящее время я использую код ниже для инициализации моих вершин и индексных буферов:

    vertices = new float[]
            {
                    p[0].x, p[0].y, 0.0f,
                    p[1].x, p[1].y, 0.0f,
                    p[2].x, p[2].y, 0.0f,
                    p[3].x, p[3].y, 0.0f,
            };

    // The order of vertex rendering for a quad
    indices = new short[] {0, 1, 2, 0, 2, 3};

    ByteBuffer bb = ByteBuffer.allocateDirect(vertices.length * 4);
    bb.order(ByteOrder.nativeOrder());
    vertexBuffer = bb.asFloatBuffer();
    vertexBuffer.put(vertices);
    vertexBuffer.position(0);

    ByteBuffer dlb = ByteBuffer.allocateDirect(indices.length * 2);
    dlb.order(ByteOrder.nativeOrder());
    drawListBuffer = dlb.asShortBuffer();
    drawListBuffer.put(indices);
    drawListBuffer.position(0);

Если я прав, это не создание VBO. Итак, если я хочу создать VBO, будет ли код для создания VBO идти сразу после кода, указанного выше? Если так, как это будет создано?

Кроме того, как VBO отображается и отображается на экране?

Отображается ли он так же, как при использовании массивов вершин и индексов? Если нет, каков процесс? В настоящее время я отрисовываю и рисую свои объекты, как показано в коде ниже:

    GLES20.glUseProgram(GraphicTools.sp_SolidColor);

    mPositionHandle =
            GLES20.glGetAttribLocation(GraphicTools.sp_SolidColor, "vPosition");

    GLES20.glEnableVertexAttribArray(mPositionHandle);

    GLES20.glVertexAttribPointer(mPositionHandle, 3,
            GLES20.GL_FLOAT, false,
            0, vertexBuffer);

    mtrxHandle = GLES20.glGetUniformLocation(GraphicTools.sp_SolidColor,
            "uMVPMatrix");

    GLES20.glUniformMatrix4fv(mtrxHandle, 1, false, m, 0);

    GLES20.glDrawElements(GLES20.GL_TRIANGLES, indices.length,
            GLES20.GL_UNSIGNED_SHORT, drawListBuffer);

    GLES20.glDisableVertexAttribArray(mPositionHandle);

Если у вас есть какие-либо вопросы, дайте мне знать. Заранее спасибо.

Ответы на вопрос(1)

Ваш ответ на вопрос