4

私は現在、Android で OpenGL ES 2.0 を使用する最初のプロジェクトに取り組んでいます。

オブジェクト ファイル (.obj) を解析していて、結果のメッシュをレンダリングしたいと考えています。問題は、「Galaxy Nexus」で非常にうまく動作することですが、「Samsung Galaxy Note 10.1」でアプリを実行しようとすると、同じコードで画面に何も表示されないことです。

Nexus で正しくレンダリングされるので、.obj が正しく解析されていると仮定します。

レンダリングに使用しているコードは次のとおりです。

    GLES20.glBindBuffer(GLES20.GL_ARRAY_BUFFER, triangleBuffer);
    GLES20.glBindBuffer(GLES20.GL_ELEMENT_ARRAY_BUFFER, indexBuffer);       
    //System.out.println(("MESH: " +  GLES20.glGetAttribLocation(shaderProgram, "vertex") + " " + GLES20.glGetAttribLocation(shaderProgram, "vertex")));
    GLES20.glVertexAttribPointer(GLES20.glGetAttribLocation(shaderProgram, "vertex"), 3, GLES20.GL_FLOAT, false, floatPerVertex*mBytesPerFloat, 0);
    GLES20.glEnableVertexAttribArray(GLES20.glGetAttribLocation(shaderProgram, "vertex"));
    GLES20.glVertexAttribPointer(GLES20.glGetAttribLocation(shaderProgram, "normal"), 3, GLES20.GL_FLOAT, false, floatPerVertex*mBytesPerFloat, 3*mBytesPerFloat);
    GLES20.glEnableVertexAttribArray(GLES20.glGetAttribLocation(shaderProgram, "normal"));  
    GLES20.glDrawElements(GLES20.GL_TRIANGLE_STRIP, faceCount , GLES20.GL_UNSIGNED_INT, 0);

Nexus デバイス上の GLES 2.0 と他のデバイスとの間に不一致はありますか??

編集:LogCatにエラーはありません

4

2 に答える 2

12

問題はの使用にあると思いGL_UNSIGNED_INTます。
一部の GPU はGL_UNSIGNED_SHORT.

このページは、デバイスがサポートする機能を正確に判断するのに役立ちます。
Android 開発者: OpenGL の互換性

于 2013-08-09T19:37:34.297 に答える
1

Android では、OpenGL ES および EGL ドライバーにバグがあることがよくあります。多くの人が特に Samsung ドライバーに問題を抱えていることに気付きました。Nvidia Tegra、PowerVR、または Adreno GPU を搭載したデバイスを試し、AVD エミュレーションを試すことをお勧めします。それらが機能する場合、問題はおそらく Samsung のドライバーにあります。

呼び出しごとに OpenGL ES エラーをチェックしますか? これにより、問題を絞り込むことができます。シェーダーと glUseProgram() のコンパイルおよびリンク中のエラーは特に一般的です。

于 2013-08-09T19:46:06.063 に答える