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ですか?