gluPerspective在角落里有消失点。 OpenGL的

时间:2013-12-17 01:26:56

标签: opengl pyglet perspectivecamera vanishing-point

我正在使用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)

2 个答案:

答案 0 :(得分: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

答案 1 :(得分: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)

这会将原点移动到屏幕中心(或移动相机'查看原点;这些几乎相同)