![](/img/trans.png)
[英]Python OpenGL VAO - How to use separate arrays for vertex and color data
[英]How to have a separate color for each face on my object in OpenGL?
Total OpenGL noob here...我试图用不同的颜色为金字塔的每个面着色,如下所示:
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_POLYGON
从glBegin
/ glEnd
序列中的所有顶点中生成 1 个大多边形。 请注意,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()
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.