0

OpenGL ES 1.1 を使用する Android ゲーム用にたくさんの円を描いています。glColorPointer(4, GL10.GL_FLOAT, 0, vertexColors);これらの円に素敵な放射状のグラデーションを与えるために使用します。

これらの円はスムーズにフェードインおよびフェードアウトするため、円全体のアルファ値を設定する必要があります。

今、私は試しglColor4f(1.0f, 1.0f, 1.0f, opacity);ましたが、うまくいきませんでした。私の研究で発見したように、呼び出しをglColorPointer無視しglColor4f、テクスチャとは異なりglColor4f、グラデーションを調整しません。

FloatBuffer vertexColors2番目のオプションは、十分に簡単なを変更することです

for (int i = 3; i < vertexColors.capacity(); i = i + 4) {
    vertexColors.put(i, opacity);
}

現在、私の円にはそれぞれ 129 個の頂点があり、100 ~ 150 個の円がすべてフェード インおよびフェード アウトし、ゲーム ループごとvertexColors.putに約15,000 回呼び出されます。25fpsで毎秒375,000回と、高価だと聞いていFloatBuffer.put(int index, float f)ます。そのため、これによりかなりのオーバーヘッドが追加されます。

だから私の質問は、

OpenGL ES 1.1 でグローバル アルファ値を設定できますか? glBlendColor( ES 2.0 ではもっと多くのことができることは知っていますが、1.1 では利用できません)

また、

に保存されている頂点の色を変更せずに、円の透明度を変更する方法はありFloatBufferますか?

また、

を使用して色付けされた円をフェードインおよびフェードアウトする最も効率的な方法は何glColorPointerですか?

4

0 に答える 0