(Я использую 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?