2015-10-03 3 views
0

Я новичок в OpenGL и хотел научиться использовать его для какой-то 2-й игры, которую я хотел переписать с 3D-графикой. Поэтому я начал читать статьи о том, как использовать его с Pythhon и установить PyOpenGL.PyOpenGL ужасно медленный

Моя проблема заключается в том, что моя программа, отображающая простой куб с ограничением 120 кадров в секунду, работает только со скоростью 25 кадров в секунду. Я понял, что все потери производительности лежат в части OpenGL, но я не мог понять, где именно.

Мои вопросы: - нормально ли работать с OpenGL с Python? - это моя старая часть ноутбука проблемы?

Вот код, который я использовал для отображения куба:

def draw(self): 
    glBegin(GL_QUADS)#info for OGL: treat following code as surface drawing code 
    for surface in self.surfaces: 
     x = 0 
     for vertex in surface: 
      x+=1 
      glColor3fv(self.colors[x]) 
      glVertex3fv(self.verticles[vertex]) 
    glEnd() 

    glBegin(GL_LINES) #info for OGL: treat following code as line drawing code 
    for edge in self.edges: 
     for vertex in edge: 
      glVertex3fv(self.verticles[vertex]) #pass each verticle in the verticles list to glVertex3fv, which creates edges 
    glEnd() #info for OGL:no more code incoming 

Любая помощь очень ценится.

ответ

1

Нет, это нормально для OpenGL, чтобы работать так медленно. Медленность здесь происходит от использования непосредственного режима (glBegin(), glEnd()). В принципе, каждый отдельный фрейм вы вызываете эти команды python один за другим, и карта должна немедленно выводить результат. Это медленное значение в C, не говоря уже о Python, который интерпретирует строку за строкой.

Вы хотите подготовить буферы вершин (в том, что обычно называется VBO), а затем в режиме рендеринга просто отправить их для пакетного рендеринга.

Взгляните на этот wikibook для современного подхода OpenGL (> = 2.0): https://en.wikibooks.org/wiki/OpenGL_Programming/Modern_OpenGL_Introduction. Это в C/C++, но вы можете следить за функциями invocations и принципов.

Смежные вопросы