2010-12-17 13 views
0

外側にフェードアウトする六角形のパーティクルをレンダリングしたい。私は各パーティクルにTRIANGLE_FANを使用しました。しかし、透明性はあまり良くありません。OpenGLの透明度を持つGL_TRIANGLE_FANsとしてのパーティクルのレンダリング

glBegin(GL_TRIANGLE_FAN); 
    glColor4f(c.x, c.y, c.z, particle.temperature/100.0); 
    glVertex3f(0, 0, 0); 
    glColor4f(0, 0, 0, 0); 
    glVertex3f(0.866025404 * H/2, 0.5 * H/2, 0); 
    glVertex3f(0, 1 * H/2, 0); 
    // other vertices omitted 
glEnd(); 

出力がちらつきがあり、一部のフレームで不透明なオブジェクトの上に黒の透明部分が描画されています。このバグを避けるために、どのようにしてレンダリングルーチンを変更する必要がありますか?あなたが見ているもの

output

+2

ブレンド設定はどのように見えますか? – Kos

+0

glBlendFunc(GL_SRC_ALPHA、GL_ONE_MINUS_SRC_ALPHA); – Etan

+1

ああ、私は同僚のミニクラフトプレーヤー(例えば、画面の下部にあるミニクラフトアイコン)を見つけました:-) – Jonathan

答えて

3

は近いZ値がZバッファに存在しているので、描画されません。他の人の背後にある粒子です。

  1. パーティクルを前面に描画することができます。

  2. デプステストを無効にすることもできますが、標準のアルファブレンディングは正しくありません。 ALPHA/ONEモードでは、すべてのパーティクルが蓄積されるため、オーダーも重要ではありません。

関連する問題