OpenGL ESの3アンドロイドでVAOを作成する方法

SomeUser:

だから、通常のOpenGLであなたはこのようなVAOを作成することができます

glGenVetrexArray();

そしてあなたのためVAOを作成するには、この機能を期待して、あなたにVAO IDでint型を与えます。

問題

アンドロイドではこの関数は、このようなものです:

glGenVetrexArray(int n , int[] array, int offset);

私は、これらのパラメータが何であるかを知らないと私はVAOを作成し、この上記の方法を使用してIDを取得する方法がわかりませんか?

alexrnov:

N - VAOsの数(量)が返されます。

アレイ - 作成されたオブジェクトの識別子を持つn型素子のアレイ。

= 0のオフセット。

VAOを作成する場合には、関数を使用して、現在行われている。GLES30.glBindVertexArray(VAO [0])。VAO、などのすべてのコール、結合後:glBindBuffer、glEnableVertexAttribArray、glVertexAttribPointerを、現在のVAOに影響を与えます。

public class Renderer implements GLSurfaceView.Renderer {
    private int[] VBOIds = new int[2]; // VertexBufferObject Ids
    private int[] VAOId = new int[1]; // VertexArrayObject Id

    public Renderer(...) {
        // create vertex buffer objects
        VBOIds[0] = 0;
        VBOIds[1] = 0;
        GLES30.glGenBuffers(2, VBO, 0);
        ...
        GLES30.glBindBuffer(GLES30.GL_ARRAY_BUFFER, VBO[0]);
        GLES30.glBufferData(GLES30.GL_ARRAY_BUFFER, verticesData.length * 4,
                    vertices, GLES30.GL_STATIC_DRAW);
        ...
        GLES30.glBindBuffer(GLES30.GL_ELEMENT_ARRAY_BUFFER, VBO[1]);
        GLES30.glBufferData(GLES30.GL_ELEMENT_ARRAY_BUFFER, indicesData.length * 2, indices, GLES30.GL_STATIC_DRAW);
        ...
    }

    public void onSurfaceCreated(GL10 glUnused, EGLConfig config) {
        GLES30.glGenVertexArrays(1, VAOId, 0); // Generate VAO Id
        GLES30.glBindVertexArray(VAOId[0]); // Bind the VAO
        // invokes commands glBindBuffer, glEnableVertexAttribArray, 
        // glVertexAttribPointer for VBOs
        ...
        // Reset to the default VAO (default VAO always is 0)
        GLES30.glBindVertexArray(0);
    }

    public void onDrawFrame() {
        ...
        GLES30.glBindVertexArray(VAOId[0]); // active VAO
        // Draw on base the VAO settings
        GLES30.glDrawElements(GLES30.GL_TRIANGLES, indicesData.length,
                      GLES30.GL_UNSIGNED_SHORT, 0);
        // Return to the default VAO
        GLES30.glBindVertexArray(0);
    }
}

あなたはVAOを使用しての良い例を見ることができ、ここで

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=281770&siteId=1