OpenGLで正十二面体を作成しました。(ウィキペディアの画像のように) 顔を透明にしたかったのですが、これは常に機能するとは限りません。OpenGLのドキュメントを掘り下げた後、「透明な面を後ろから前に並べ替える必要がある」ようです。うーん。それ、どうやったら出来るの?
glRotatef() を呼び出して座標系を回転させますが、面の参照座標は同じままです。回転効果は、私の renering コードの「外側」に適用されます。
座標に変換を適用すると、他のすべてが動かなくなります。
この場合、どうすれば顔を並べ替えることができますか?
[編集]なぜこれが起こるのか知っています。解決策がどのように見えるかわかりません。誰かが正しい OpenGL 呼び出しまたはサンプル コードを教えてもらえますか? 座標変換がいつ終了するかを知っており、面の頂点の座標を持っています。顔の中心座標を計算する方法を知っています。Z値でソートする必要があることを理解しています。Vector3f を現在のビュー マトリックス (または座標系を回転させるもの) で変換するにはどうすればよいですか?
ビューを回転させるコード:
glRotatef(xrot, 1.0f, 0.0f, 0.0f);
glRotatef(yrot, 0.0f, 1.0f, 0.0f);