Android OpenGL ES 2. 0VBOがレンダリングされない

Zippy

シンプルなテクスチャクワッドをVBOとしてレンダリングしようとしています。VBOを使用しない場合、すべてが期待どおりに機能します(ただし、静的オブジェクトの場合は、フレームごとに頂点データを更新しているため、意味がないように見えるため、VBOに切り替えます)。

しかし、私は何か間違ったことをしているに違いありません。なぜなら、画面に何も、絶対にジルチでレンダリングされないからです。

これが私が持っている関連コードです:

コンストラクタ:

public VBO() {

        updateVertexData();

        vertexBuf = ByteBuffer.allocateDirect(vertices.length * 4).order(ByteOrder.nativeOrder()).asFloatBuffer();

        vertexBuf.put(vertices);

        vertexBuf.position(0);

        //Create buffers array for VBO (I'm using interleaved data so only 1 needed here??
        final int buffers[] = new int[1];

        GLES20.glGenBuffers(1, buffers, 0);

        GLES20.glBindBuffer(GLES20.GL_ARRAY_BUFFER, buffers[0]);

        GLES20.glBufferData(GLES20.GL_ARRAY_BUFFER, vertexBuf.capacity() * 4, vertexBuf, GLES20.GL_STATIC_DRAW);

        GLES20.glBindBuffer(GLES20.GL_ARRAY_BUFFER, 0);

        mBufferIdx = buffers[0];

        vertexBuf.limit(0);
        vertexBuf = null;
    }

頂点の更新

public void updateVertexData(){

    vertices[0]=-1;
    vertices[1]=1f;
    vertices[2]=0;
    vertices[3]=0;
    vertices[4]=0;

    vertices[5]=1;
    vertices[6]=1f;
    vertices[7]=0;
    vertices[8]=1;
    vertices[9]=0;

    vertices[10]=-1;
    vertices[11]=-1f;
    vertices[12]=0;
    vertices[13]=0;
    vertices[14]=1;

    vertices[15]=1;
    vertices[16]=-1f;
    vertices[17]=0;
    vertices[18]=1;
    vertices[19]=1;
}

レンダリング

public void drawVBO(){

    GLES20.glUseProgram(iProgId);

    mMVPMatrixHandle = GLES20.glGetUniformLocation(iProgId, "uMVPMatrix");

    GLES20.glUniformMatrix4fv(mMVPMatrixHandle, 1, false, mvpMatrix, 0);

    GLES20.glBindBuffer(GLES20.GL_ARRAY_BUFFER, mBufferIdx);

    GLES20.glEnableVertexAttribArray(iPosition);

    GLES20.glVertexAttribPointer(iPosition, 3, GLES20.GL_FLOAT, false, 5 * 4, 0);

    GLES20.glBindBuffer(GLES20.GL_ARRAY_BUFFER, mBufferIdx);

    GLES20.glEnableVertexAttribArray(iTexCoords);

    GLES20.glVertexAttribPointer(iTexCoords, 2, GLES20.GL_FLOAT, false, 5 * 4, 3);

    GLES20.glBindBuffer(GLES20.GL_ARRAY_BUFFER, 0);

    GLES20.glDrawArrays(GLES20.GL_TRIANGLE_STRIP, 0, 4);

}   

私が言ったように、VBOコードを取り除き、コードをupdateVertexDataからdrawメソッドに戻すとすべて正常に機能します。誰かが私がここで間違っていることを説明できれば幸いです....

Zippy

問題は、2番目の ' glVertexAttribPointer '行のオフセットでした

元の行

GLES20.glVertexAttribPointer(iTexCoords, 2, GLES20.GL_FLOAT, false, 5 * 4, 3);

'offset'パラメーター(最後の '3')が間違っていました。3は位置データ(x、y、z)のサイズであり、これに4(浮動小数点あたりのバイト数)を掛ける必要があります。そう...

正しいコード

//For readability
final int POSITION_SIZE = 3;
final int BYTES_PER_FLOAT = 4;
final int TEXTURE_SIZE = 2;
final int STRIDE = (POSITION_SIZE+TEXTURE_SIZE)*BYTES_PER_FLOAT   

//Correct line
GLES20.glVertexAttribPointer(iTexCoords, 2, GLES20.GL_FLOAT, false, STRIDE, (POSITION_SIZE*BYTES_PER_FLOAT));

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

OpenGL ES 2.0:2番目のVBOをレンダリングできないようですか?

分類Dev

Android OpenGL ES 2 Texture Quadrants Rotated

分類Dev

Android Surfaceflinger and openGL ES

分類Dev

Android openGL ES2rotateMMフリップ回転角度

分類Dev

OpenGL es2の頂点。Android用Java

分類Dev

AndroidでのOpenGL ESレンダリングとUI要素の組み合わせ

分類Dev

Android Google Mapv2レンダリングされない

分類Dev

Android OpenGL ES2-ブレンディングは常に相加的であるようです

分類Dev

Android OpenGL ES 2.0:テキストが表示されない

分類Dev

OpenGL ES2.xシーンでいくつかの文字をレンダリングする

分類Dev

AndroidネイティブOpengl ES 3.0 PBOが空の画面をレンダリングする

分類Dev

OpenGL ES2-テクスチャが表示されない

分類Dev

OpenGL ES 3.0 / GLSLがデータをレンダリングしない(Kotlin)

分類Dev

OpenGL ES 2(iOS)で単純な正方形をレンダリングする誤った変換

分類Dev

Android OpenGL ES 2.0:配置されたオブジェクトが異なるVBAとVBO

分類Dev

Android OpenGL ES 2:メインアクティビティのフラグメントとしてOpenGLアクティビティを使用する方法

分類Dev

フラグメントシェーダーブレンディングとAndroid2.3、OPENGL ES2.0でのgl_LastFragColor宣言されていない識別子

分類Dev

Android OpenGL ES2.0-3Dオブジェクトが表示されない

分類Dev

opengl es 2.0 android c ++ glGetTexImage代替

分類Dev

Model not visible android OpenGL ES 2.0

分類Dev

Model not visible android OpenGL ES 2.0

分類Dev

Android Opengl ES2、テクスチャのビットマップではなく色

分類Dev

OpenGLがmacOSMojaveでレンダリングされない

分類Dev

LWJGL-OpenGLがレンダリングされない

分類Dev

OpenGL が Ubuntu 18.04 でレンダリングされない

分類Dev

OpenGL ES 2でVBOを作成して使用する方法

分類Dev

Android OpenGL camera2 texture resolution

分類Dev

OpenGL ES 2.0 Android-キューブ回転バグ

分類Dev

OpenGL ES 2.0Texture2Dインデックス作成

Related 関連記事

  1. 1

    OpenGL ES 2.0:2番目のVBOをレンダリングできないようですか?

  2. 2

    Android OpenGL ES 2 Texture Quadrants Rotated

  3. 3

    Android Surfaceflinger and openGL ES

  4. 4

    Android openGL ES2rotateMMフリップ回転角度

  5. 5

    OpenGL es2の頂点。Android用Java

  6. 6

    AndroidでのOpenGL ESレンダリングとUI要素の組み合わせ

  7. 7

    Android Google Mapv2レンダリングされない

  8. 8

    Android OpenGL ES2-ブレンディングは常に相加的であるようです

  9. 9

    Android OpenGL ES 2.0:テキストが表示されない

  10. 10

    OpenGL ES2.xシーンでいくつかの文字をレンダリングする

  11. 11

    AndroidネイティブOpengl ES 3.0 PBOが空の画面をレンダリングする

  12. 12

    OpenGL ES2-テクスチャが表示されない

  13. 13

    OpenGL ES 3.0 / GLSLがデータをレンダリングしない(Kotlin)

  14. 14

    OpenGL ES 2(iOS)で単純な正方形をレンダリングする誤った変換

  15. 15

    Android OpenGL ES 2.0:配置されたオブジェクトが異なるVBAとVBO

  16. 16

    Android OpenGL ES 2:メインアクティビティのフラグメントとしてOpenGLアクティビティを使用する方法

  17. 17

    フラグメントシェーダーブレンディングとAndroid2.3、OPENGL ES2.0でのgl_LastFragColor宣言されていない識別子

  18. 18

    Android OpenGL ES2.0-3Dオブジェクトが表示されない

  19. 19

    opengl es 2.0 android c ++ glGetTexImage代替

  20. 20

    Model not visible android OpenGL ES 2.0

  21. 21

    Model not visible android OpenGL ES 2.0

  22. 22

    Android Opengl ES2、テクスチャのビットマップではなく色

  23. 23

    OpenGLがmacOSMojaveでレンダリングされない

  24. 24

    LWJGL-OpenGLがレンダリングされない

  25. 25

    OpenGL が Ubuntu 18.04 でレンダリングされない

  26. 26

    OpenGL ES 2でVBOを作成して使用する方法

  27. 27

    Android OpenGL camera2 texture resolution

  28. 28

    OpenGL ES 2.0 Android-キューブ回転バグ

  29. 29

    OpenGL ES 2.0Texture2Dインデックス作成

ホットタグ

アーカイブ