PyOpenGL FPS улучшение

1

Я пытаюсь улучшить свою скорость FPS для программы OpenGL на питоне. До сих пор мой подход:

    self.bufferVertices = glGenBuffers(1)
    glBindBuffer(GL_ARRAY_BUFFER_ARB, self.bufferVertices)
    glBufferData(GL_ARRAY_BUFFER_ARB, ADT.arrayByteCount(vertices), ADT.voidDataPointer(vertices), GL_STATIC_DRAW_ARB)

    self.bufferNormals = glGenBuffers(1)
    glBindBuffer(GL_ARRAY_BUFFER_ARB, self.bufferNormals)
    glBufferData(GL_ARRAY_BUFFER_ARB, ADT.arrayByteCount(normals), ADT.voidDataPointer(normals), GL_STATIC_DRAW_ARB)

    self.size = len(triangles)
    self.bufferTriangles = glGenBuffers(1)
    glBindBuffer(GL_ELEMENT_ARRAY_BUFFER_ARB, self.bufferTriangles)
    glBufferData(GL_ELEMENT_ARRAY_BUFFER_ARB, len(triangles), ADT.voidDataPointer(triangles), GL_STATIC_DRAW_ARB)
-----------------------------------------------------------------
    glEnableClientState(GL_VERTEX_ARRAY) 
    glBindBuffer(GL_ARRAY_BUFFER_ARB, self.bufferVertices)
    glVertexPointer(3, GL_FLOAT, 0, None)
    glBindBuffer(GL_ARRAY_BUFFER_ARB, self.bufferNormals)
    glNormalPointer(GL_FLOAT, 0, None)
    glBindBuffer(GL_ELEMENT_ARRAY_BUFFER_ARB, self.bufferTriangles)
    glIndexPointer(GL_INT, 0, None)

    glDrawElements(displayType, self.size, GL_UNSIGNED_INT, 0)

    glDisableClientState(GL_VERTEX_ARRAY) 

Теперь displayType изменяется между GL_POINTS и GL_TRIANGLES. В настоящее время я получаю 28FPS для очков и только около 5-6FPS для треугольников. Я эта разница нормальная? Что я могу сделать для улучшения FPS?

Теги:
opengl
pyopengl

1 ответ

0
Лучший ответ

Поскольку вы используете объекты буфера вершин, вы не ограничены ЦП. Таким образом, либо у вас много геометрии, либо на самом деле нет ускорения HW. В любом случае следует ожидать снижения производительности при переходе от точек к заполненным треугольникам из-за более высоких требований к заполнению.

  • 0
    Да, у меня много геометрии. Спасибо за ответ.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню