0

私は pyglet: http://www.pyglet.org/を使用して opengl を操作しています。しかし、私にはいくつかの問題があります。

私の消失点は、画面の隅 (0,0) の左下隅に表示されます。次の画像はこれを示しているはずです: http://i.imgdiode.com/0wu5E0.png

左側にあるのは、私が今見ている立方体です。右側は、それがどのように見えるべきか (どのようにしたいのか) です。どうすればそのようにできますか?

また、マトリックスモードについて少し読んだところ、GL_PROJECTIONがgluPerspectiveで使用されることになっているようです。しかし、それらを一緒に使用すると、遠近効果がなくなります。GL_MODELVIEW でのみ gluPerspective が機能します。どうしてこうなったのか不思議です。

以下は、オブジェクトを表示するために使用するコードです。

glMatrixMode(GL_MODELVIEW)
glLoadIdentity()
gluPerspective(60,1,0,10)
4

2 に答える 2

2

原点 (0,0) は、画面の左下隅に基づいています。これにより、2D と 3D の間のパリティが得られます。pyglet の 2D 座標は左下隅から始まります。

これを整理するには、射影行列の前に翻訳を追加するだけです。

window = pyglet.window.Window()
glLoadIdentity()
pyglet.graphics.glTranslatef(window.width / 2.0, window.height / 2.0, 0.0)
gluPerspective(60,1,0,10)

これにより、原点が画面の中央に移動します (または「カメラ」を移動して原点を見るようにします。これらは実質的に同じです)。

于 2016-02-19T18:22:57.830 に答える