【发布时间】:2014-04-16 19:12:11
【问题描述】:
我正在尝试创建一个不断旋转的三角金字塔。我从教程示例中获取了一些代码来获取旋转,我认为它正在工作,但我的身材在 z 轴上被剪裁了。从我在各种教程、论坛等中看到的情况来看,openGL 的默认 z 范围为 (-1, 1)。如何更改它以显示我的图的全部范围?
谢谢(这是我的代码)
import pyglet
from pyglet.gl import *
rx = ry = rz = 0
config = Config(sample_buffers=1, samples=4, depth_size=1000, double_buffer=True,)
win = pyglet.window.Window(resizable=True, config=config)
@win.event
def update(dt):
global rx, ry, rz
rx += dt * 1
ry += dt * 80
rz += dt * 30
rx %= 360
ry %= 360
rz %= 360
pyglet.clock.schedule(update)
@win.event
def on_draw():
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT)
glLoadIdentity()
glTranslatef(200, 200, -4)
glRotatef(rz, 0, 0, 1)
glRotatef(ry, 0, 1, 0)
glRotatef(rx, 1, 0, 0)
glBegin(GL_TRIANGLES)
glVertex3f(-100.0, 0.0, 0.0)
glVertex3f(100.0, 0.0, 0.0)
glVertex3f(0, 200.0, 0.0)
glVertex3f(-100.0, 0.0, 0.0)
glVertex3f(0.0, 0.0, -100.0)
glVertex3f(0.0, 200.0, 0.0)
glVertex3f(100.0, 0.0, 0.0)
glVertex3f(0.0, 0.0, -100.0)
glVertex3f(0.0, 200.0, 0.0)
glVertex3f(-100.0, 0.0, 0.0)
glVertex3f(0.0, 0.0, -100.0)
glVertex3f(100.0, 0.0, 0.0)
glEnd()
glLoadIdentity()
#glTranslatef(1.5, 0.0, -10.0)
pyglet.app.run()
【问题讨论】:
-
你能张贴一张图片,说明你说“在 z 轴上剪辑”是什么意思吗?我不熟悉这个词
-
glOrtho 用于您使用的 OpenGL 版本。
-
显然无法发布图片,因为我的“声誉”不够高。
-
我应该在哪里实现 glOrtho?我尝试将其放入“on_draw”,但没有任何效果。
标签: opengl enthought pyglet canopy depth-buffer