5

現在、OpenGL ES 1.1 で動作する Android アプリケーションを作成しています。私が開発したHTC Desire(Android 2.3.7)では問題なく動作しました。Nexus 7でテストしたかったのですが、黒い画面しか表示されません。すべてのテクスチャが単純に黒くレンダリングされていることがわかりました。オブジェクトもテクスチャもレンダリングされていない部分では、(ほぼ) 黒の背景色が表示されます。

私の質問は、一部のデバイスではテクスチャがうまくレンダリングされ、他のデバイスではレンダリングされないのはなぜですか?

テクスチャはすべて、サイズが 2 乗の 2 次です (つまり、512x512、1024x1024)。テクスチャの作成時に使用される設定は次のとおりです。

gl.glBindTexture(GL10.GL_TEXTURE_2D, getTextureId());   

// Create Nearest Filtered Texture
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);

// Different possible texture parameters, e.g. GL10.GL_CLAMP_TO_EDGE
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_REPEAT);

gl.glTexEnvf(GL10.GL_TEXTURE_ENV, GL10.GL_TEXTURE_ENV_MODE, /*GL10.GL_REPLACE*/ GL10.GL_MODULATE);

// Use the Android GLUtils to specify a two-dimensional texture image
// from our bitmap
GLUtils.texImage2D(GL10.GL_TEXTURE_2D, 0, bitmap, 0);

両方のデバイスでテクスチャをレンダリングするにはどうすればよいですか?

4

1 に答える 1

8

ビットマップをドローアブルから取得している場合は、それらがすべて drawable-nodpi フォルダーにあることを確認してください。

そうしないと、2 のべき乗の画像が、さまざまな Android 密度で拡大された後に 2 のべき乗にならない可能性があります (フォルダー内の 1024x1024 画像は、drawableHDPI デバイスでは 1536x1536 になります)。

于 2012-09-07T20:33:38.893 に答える