私はシンプルなカーレースゲームをコーディングしています。私のシーンに影を追加しようとしている間、黒い透明なポリゴンを描くことによって、私は奇妙な問題に悩まされていました。影が横面に描かれている透明なポリゴンは、下にあるサーフェスも透明にします。
私は遠くからそれらを見たとき、彼らは透明であるかのように、私は表面を通して見ることができます。私は別のshadow_offset影を投影する任意のオブジェクトに割り当て競合を避けると影に
glEnable(GL_POLYGON_OFFSET_FILL);
//call to object.drawShadows()
glDisable(GL_POLYGON_OFFSET_FILL);
そして
void Object::drawShadows(){
glPolygonOffset(-1.0-shadow_offset,-1.0-shadow_offset);
//Draw shadow
}
を描画する前に、この呼び出しを行う
void PolyShadow::Draw(){
glColor4f(0,0,0,0.5f);
glEnable (GL_BLEND);
glBlendFunc (GL_DST_COLOR,GL_ONE_MINUS_SRC_ALPHA);
this->drawShadow();
glDisable (GL_BLEND);
shadow_initialized = true;
}
私も
てみましたglBlendFunc (GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
でも何も変わりません。あなたはブレンドを使用するときは、バックツーフロントレンダリングする必要があり、事前
ありがとうございます!私はそれに取り組んでいきます –