5

HTC Desire で OpenGL (Android) のブレンドを有効にする方法を知っている人はいますか? 色付きの三角形を描画しようとしており、カラー バッファーのアルファ値を使用して背景 (または別の三角形) とブレンドしています。

エミュレーター (2.1) と htc hero 2.1 の両方で動作しますが、2.2 では私の希望では動作しません。これを引き起こすヒーローと欲望の間にハードウェアの違いはありますか?

コードの主なものは次のとおりです (順不同):

gl.glClear(GL10.GL_COLOR_BUFFER_BIT | GL10.GL_DEPTH_BUFFER_BIT);

gl.glEnable(GL10.GL_BLEND);         
gl.glBlendFunc(GL10.GL_SRC_ALPHA, GL10.GL_ONE_MINUS_SRC_ALPHA);

private final static float[] colors = {
       1f, 0f, 0f, 0.5f, // point 0 red
       1f, 0f, 0f, 0.5f, // point 1 red
       1f, 0f, 0f, 0.5f, // point 2 red
       1f, 0f, 0f, 0.5f, // point 3 red

       1f, 0f, 0f, 0.5f, // point 4 red
       1f, 0f, 0f, 0.5f, // point 5 red
       1f, 0f, 0f, 0.5f, // point 6 red
       1f, 0f, 0f, 0.5f, // point 7 red
};

PS。誰かが必要な場合は、さらにコードを提供できます...

4

1 に答える 1

3

ジョナス、照明についてのあなたのコメントは正しいようです。OpenGL ES 1.1.12 仕様ではThe value of A produced by lighting is the alpha value associated with dcm、dcm はマテリアルの拡散色です。

を有効COLOR_MATERIALにしている場合、マテリアルの拡散色とマテリアルの環境色の両方が現在の頂点の色から取得されます。これは、Desire が正しくなく、エミュレータが正しいことを意味します。

無効にした場合COLROR_MATERIAL(既定の状態)、拡散色マテリアルは で設定されglMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, ptrTo4Floats)ます。これは、Desire が正しく、エミュレータが正しくないことを意味します。

于 2010-11-19T18:23:06.237 に答える