0

openGL で画面に 2 つのオブジェクトを描画しました。1 つは GLU オブジェクトを使用した球体で、もう 1 つはテクスチャ マップされた星です。z 座標に関係なく、テクスチャ マップされた星は常に前に描画されているように見えます。これは通常の openGL の動作ですか? これを防ぐ方法はありますか?

注: 私は worldwind フレームワーク内で作業しているため、他の何かが原因である可能性があります。しかし、テクスチャ マップされたオブジェクトが前面に表示されるのは正常ですか? そうは思いませんが、よくわかりません...

4

1 に答える 1

0

これは worldwind のバグではなく、実際に望ましい動作です。glVertex2f() を使用することは、glVertex3f() を使用して z = 0 を設定することと同じです。したがって、ビューアーに非常に近い平面に星を描画するだけです (投影にもよります)。

問題を解決するには、glDepthMask(0) を使用して深度書き込みを無効にしてから、星を描画し、glDepthMask(1) を呼び出してから、星の前にある球を描画します。

また、星に glDepthFunc(GL_GREATER) を使用するか、球体に glDisable(GL_DEPTH_TEST) を使用して、同じ効果をすばやく実現することもできます。

より複雑なもの (星が球体と交差するなど) を作成するには、行列を使用して星を目的の位置に配置する必要があります。

于 2012-02-13T11:13:06.490 に答える