(ฉันใช้ PyOpenGL และแล็ปท็อปของฉันใช้ OpenGL 2.1)
ฉันได้ยินมาว่า OpenGL วาดรูปสามเหลี่ยมนั้นเร็วกว่ารูปหลายเหลี่ยมมาก แต่การใช้รายการแสดงผลจะช่วยลดค่าใช้จ่ายอีกด้วย ฉันจะได้รับความเร็วโดยการแปลงโมเดลของฉันเป็นแถบสามเหลี่ยมหรือไม่ หากปัจจุบันฉันอยู่ในรูปหลายเหลี่ยม (สามเหลี่ยมและรูปสี่เหลี่ยมและอื่น ๆ ) และใช้ glBegin(GL_TRIANGLE_STRIP)
เพื่อวาดแทน glBegin(GL_POLYGON)
หากฉันใช้รายการแสดงผลอยู่แล้ว รายการที่แสดงจะสามเหลี่ยมทุกอย่างโดยอัตโนมัติหรือไม่
ฉันมีโมเดลที่มีใบหน้าประมาณ 50 ใบหน้าในรูปแบบ obj และรายการทำด้วยรหัสนี้:
treelist = glGenLists(1)
glNewList(treelist, GL_COMPILE)
for s in OBJ.treeobjs:
for face in s.faces:
verts, normals, texcoords = face
glBegin(GL_POLYGON)
for i in range(len(verts)):
glNormal3fv(s.normals[normals[i]])
if texcoords[i] > 0:
glTexCoord2fv(s.texcoords[texcoords[i]])
glVertex3fv(s.vertices[verts[i]])
glEnd()
glEndList()
และวาดด้วย:
glCalllist(treelist)
แต่ถ้าฉันต้องการแปลงทุกอย่างเป็นแถบสามเหลี่ยม (สามเหลี่ยมนั้นง่ายในเครื่องปั่น) ฉันจะต้องใช้รูปแบบที่แตกต่างจาก obj หรือไม่