0

Android ICS を搭載した HTC One x で見られる問題がありますが、これまでにテストした他のデバイスでは見られません。

アルファ チャネル (24 ビット png) を持たず、アルファ ブレンディングを有効にしていないすべてのテクスチャは、そのデバイスでは白く表示されます。テクスチャを描画するために使用する以下のコードを参照してください。m_alpha_blend は、アルファ チャネルを持たないテクスチャでは false です。

if (m_alpha_blend) {
    gl.glEnable(GL10.GL_BLEND);

    gl.glBlendFunc(GL10.GL_SRC_ALPHA, GL10.GL_ONE_MINUS_SRC_ALPHA);
}

gl.glEnable(GL10.GL_TEXTURE_2D);

gl.glBindTexture(GL10.GL_TEXTURE_2D, m_texture_id);
gl.glTexCoordPointer(2, GL10.GL_FLOAT, 0, m_texture_buffer);

... (drawing)

gl.glDisable(GL10.GL_TEXTURE_2D);
if (m_alpha_blend) {
    gl.glDisable(GL10.GL_BLEND);
}
4

2 に答える 2

1

解決策を見つけました。これはアルファ/透明度の問題ではなく、テクスチャ サイズの問題です。一辺が 1024 ピクセルより大きいすべてのテクスチャは、そのデバイスで白く表示されます。

于 2012-04-19T22:17:26.353 に答える
0

あなたはおそらく次のようなものを実行したいと思うでしょう:

int max;
glGetIntegerv(GL_MAX_TEXTURE_SIZE, &max);

各デバイスで、デバイスが最大解像度のテクスチャをサポートしていない場合は、テクスチャを小さいサイズにダウングレードします。

于 2012-04-19T23:09:56.820 に答える