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

4
gluPerspective(60,1,0,10)
                    ^ stop that

zNear必须大于零且小于zFar。尝试类似的东西0.1

试试这个顺序:

glMatrixMode(GL_PROJECTION)
glLoadIdentity()
gluPerspective(60,1,0.1,10)

glMatrixMode(GL_MODELVIEW)
glLoadIdentity()

# draw stuff
于 2013-12-17T02:50:34.047 回答
2

原点 (0,0) 位于屏幕的左下角。这提供了 2D 和 3D 之间的对等;pyglet 的二维坐标从左下角开始。

要解决这个问题,您只需要在投影矩阵之前添加一个翻译:

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 回答