2

バインド コード:

gl.glBindTexture (GL10.GL_TEXTURE_2D, id);

gl.glTexParameterf (GL10.GL_TEXTURE_2D, GL10.GL_TEXTURE_MIN_FILTER, GL10.GL_LINEAR);
gl.glTexParameterf (GL10.GL_TEXTURE_2D, GL10.GL_TEXTURE_MAG_FILTER, GL10.GL_LINEAR);

gl.glTexParameterf (GL10.GL_TEXTURE_2D, GL10.GL_TEXTURE_WRAP_S, GL10.GL_CLAMP_TO_EDGE);
gl.glTexParameterf (GL10.GL_TEXTURE_2D, GL10.GL_TEXTURE_WRAP_T, GL10.GL_CLAMP_TO_EDGE);

gl.glTexEnvf (GL10.GL_TEXTURE_ENV, GL10.GL_TEXTURE_ENV_MODE, GL10.GL_REPLACE);

GLUtils.texImage2D (GL10.GL_TEXTURE_2D, 0, bitmaps.get (resource), 0);

Android 2.3.3 および Android 4.xx の場合:

画面良好

Android 2.3.7 の場合:

画面が悪い

追加情報: テクスチャの幅と高さが 2 のべき乗ではありません。テクスチャは drawable-nodpi フォルダーにあります。テクスチャはさまざまな画面サイズに合わせて引き延ばされています。最初のスクリーンショットは画面サイズ 854x480 のデバイスから取得され、2 番目は 800x480 のデバイスから取得されます。

  • デバイスは CyanogenMod-7 を実行します。

私の最初の容疑者は gl.glTexParameterf (GL10.GL_TEXTURE_2D、設定ですが、私はそれらの専門家ではありません。いくつかの代替案を試しましたが、あまり役に立ちませんでした.

4

2 に答える 2

3

Android 上の OpenGLES では、多くのベンダーが 2 のべき乗以外のテクスチャで動作しないため、安全を確保する必要があります。すべてのテクスチャをオフラインでサイズ変更するか、読み込み中にサイズ変更することができます。2 のべき乗でないテクスチャのサイズを簡単に変更する方法の詳細については、このクラスを確認してください。 .java

于 2013-02-01T09:55:12.900 に答える
1

悪いニュース テクスチャの幅と高さを 2 のべき乗値 (1024x1024) で設定しようとしたところ、うまくいきました:

ここに画像の説明を入力

その理由は、かなりの数のデバイスの一部が npot テクスチャをサポートしていなかったためです。

したがって、提供されたテクスチャが npot の寸法である場合、私の意見による解決策としては、読み込み中にその場でサイズを変更する方がよいでしょう。

于 2013-01-31T17:01:05.820 に答える