总OpenGL noob在这里...我试着用不同的 colored颜色 给 pyramid 的每个面上色,就像这样:

    glBegin(GL_POLYGON)
    f1 = ((1,-1,-1),(1,-1,1),(0,1,0))
    f2 = ((1,-1,1),(-1,-1,1),(0,1,0))
    f3 = ((-1,-1,-1),(-1,-1,1),(0,1,0))
    f4 = ((1,-1,-1),(-1,-1,-1),(0,1,0))
    f5 = ((1,-1,-1),(1,-1,1),(-1,-1,-1),(-1,-1,1))
    for i in f1:
        glColor3f(0,255,255)
        glVertex3fv(i)
    for i in f2:
        glColor3f(255,0,0)
        glVertex3fv(i)
    for i in f3:
        glColor3f(0,255,0)
        glVertex3fv(i)
    for i in f4:
        glColor3f(255,255,0)
        glVertex3fv(i)
    for i in f5:
        glColor3f(255,0,255)
        glVertex3fv(i)
    glEnd()

但结果很糟糕...我做错了什么?

推荐答案

基本体类型GL_POLYGONglBegin/glEnd序列中的所有顶点中生成一个大多边形.请注意,OpenGL无法猜测一个多边形由多少个点组成.您需要以glBegin/glEnd个分离序列绘制多边形:

faces = [
    ((1,-1,-1),(1,-1,1),(0,1,0)),
    ((1,-1,1),(-1,-1,1),(0,1,0)),
    ((-1,-1,-1),(-1,-1,1),(0,1,0)),
    ((1,-1,-1),(-1,-1,-1),(0,1,0)),
    ((1,-1,-1),(1,-1,1),(-1,-1,-1),(-1,-1,1))
]
colors = [(0,255,255), (255,0,0), (0,255,0), (255,255,0), (255,0,255)]

for face, color in zip(faces, colors):
    glColor3fv(color)
    
    glBegin(GL_POLYGON)
    for vertex in face:
        glVertex3fv(vertex)
    glEnd()

或者,您可以绘制GL_TRIANGLES并将棱锥体的底部绘制为2个三角形:

tringles = [
    ((1,-1,-1),   (1,-1,1),   (0,1,0)),
    ((1,-1,1),   (-1,-1,1),  (0,1,0)),
    ((-1,-1,-1), (-1,-1,1),  (0,1,0)),
    ((1,-1,-1),  (-1,-1,-1), (0,1,0)),
    ((1,-1,-1),  (1,-1,1),   (-1,-1,-1)),
    ((1,-1,-1),  (-1,-1,-1), (-1,-1,1))
]
colors = [
    (0,255,255), (255,0,0), (0,255,0), (255,255,0), 
    (255,0,255), (255,0,255)
]

glBegin(GL_TRINAGLES)
for tringle, color in zip(tringles, colors):
    glColor3fv(color)
    for vertex in triangle:
        glVertex3fv(vertex)
glEnd()

Python相关问答推荐

根据客户端是否正在传输响应来更改基于Flask的API的行为

统计numpy. ndarray中的项目列表出现次数的最快方法

使用python playwright从 Select 子菜单中 Select 值

用fft计算指数复和代替求和来模拟衍射?

每次查询的流通股数量

为什么在Python中00是一个有效的整数?

对于数组中的所有元素,Pandas SELECT行都具有值

普洛特利express 发布的人口普查数据失败

#将多条一维曲线计算成其二维数组(图像)表示

如何在微调Whisper模型时更改数据集?

如何导入与我试图从该目录之外运行的文件位于同一目录中的Python文件?

从语法生成后出现Antlr4 Python运行时错误

在Python中比较函数参数和回调函数的正确方法

如何允许使用点输入进行键验证

我怎样才能用python打印一个 map 对象?

如何在Python中在PDF上画一条垂直线?

合并Pandas 数据框中的一些列并复制其他列

如何使用Pandas在Excel中有条件地设置单个单元格的格式?

基于行值迭代/填充列

CKEditor更新通知