如何使用pyglet创建3D?

2024-04-26 17:42:25 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图在pyglet中创建一个立方体:

import pyglet
from pyglet.gl import *

window = pyglet.window.Window(400,400,"Paka Paka",True)
@window.event
def on_draw():
    window.clear()
    glBegin(GL_QUADS)
    glVertex3f(0,40,0)
    glColor3f(1,0,0)
    glVertex3f(100,40,0)
    glColor3f(0,1,0)
    glVertex3f(100,140,0)
    glColor3f(0,0,1)
    glVertex3f(100,40,100)
    glColor3f(1,1,0)
    glVertex3f(100,140,100)
    glColor3f(1,0,1)
    glVertex3f(0,140,100)
    glColor3f(0,1,1)
    glVertex3f(0,40,100)
    glColor3f(2,0,0)
    glVertex3f(0,140,0)
    glColor3f(0,0,2)
    glEnd()
pyglet.app.run()

当我运行程序时,我看到一个黑屏。你知道吗

and when I run the program, I saw a black screen.

(向上除外) 我需要改变顶点类型还是其他什么?你知道吗

编辑:我使用了拉比76给出的代码。但没用。你知道吗


Tags: fromimporteventtrueondefwindowpyglet
1条回答
网友
1楼 · 发布于 2024-04-26 17:42:25

几何图形的表面被(默认值)orthographic projection的近-远平面剪裁。你知道吗

我建议通过^{}设置投影矩阵。e、 g.:

glOrtho(-200, 200, -200, 200, -200, 200) 

分别

glOrtho(0, 400, 400, 400, -200, 200)  

此外,建议通过^{}刷新单个缓冲窗口

on_draw的开头设置投影,并在结尾调用glFlush()

@window.event
def on_draw():
    w, h = 400, 400
    glMatrixMode(GL_PROJECTION)
    glLoadIdentity()
    glOrtho(-w/2, w/2, -h/2, h/2, -200, 200)

    glMatrixMode(GL_MODELVIEW)

    window.clear() 

    glBegin(GL_QUADS)
    # [...]
    glEnd()

    glFlush()

相关问题 更多 >