我正在使用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)
答案 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)
这会将原点移动到屏幕中心(或移动相机'查看原点;这些几乎相同)