1グローバルでアルファテストを行うことはできますか?
glEnable(GL_ALPHA_TEST);
glAlphaFunc(GL_EQUAL, 0.7);
これらの2つの関数を使用して、テクスチャを描画し、alpha>=0.7の画像を表示できます。私の質問は、2つのテクスチャを描画する場合、それらの一部が重なり、アルファの合計が0.7になる場合、この部分をどのように表示するかです。
2ビットマップをより効率的に描画する方法
質問1について、OpenGLでいくつかの機能を試しましたが、達成できませんでした。だから私は別の方法を試します。を設定しmap[512][512]
ます。まず、このマップにすべてのテクスチャを描画し、自分でアルファを蓄積します。ピクセルアルファ>=0.7の場合は色を設定し、そうでない場合は白色を設定します。最後に、マップ全体をテクスチャとしてウィンドウに描画します。この方法を使用して、グローバルでアルファテストを実行できます。しかし、それは非常に遅いです。
(このメソッドは、stackoverflowのBartek Banachewiczからのものです)
これが私の関数です:
map[512][512]
すべてゼロに設定された初期化このマップにすべてのものを描き、アルファを蓄積します
マップですべてのピクセルをループし、アルファに従って色を設定します
テクスチャを生成するために使用
glTexImage2D()
する(これは遅いかもしれないと思います)を使用
glTexCoord2f
しglVertex3f
て、これをウィンドウに描画します。
この方法を使って、私は約100の物を描きます、それは本当に遅くなります(約20 FPS)
この方法を最適化するために何かをしたり、別の成果を上げたりできますか?