OpenGL ES 1.1 を使用する Android ゲーム用にたくさんの円を描いています。glColorPointer(4, GL10.GL_FLOAT, 0, vertexColors);
これらの円に素敵な放射状のグラデーションを与えるために使用します。
これらの円はスムーズにフェードインおよびフェードアウトするため、円全体のアルファ値を設定する必要があります。
今、私は試しglColor4f(1.0f, 1.0f, 1.0f, opacity);
ましたが、うまくいきませんでした。私の研究で発見したように、呼び出しをglColorPointer
無視しglColor4f
、テクスチャとは異なりglColor4f
、グラデーションを調整しません。
FloatBuffer vertexColors
2番目のオプションは、十分に簡単なを変更することです
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
ですか?