Производительность PyOpengl и PyQt - PullRequest
1 голос
/ 15 февраля 2012

Я пишу загрузчик Wavefront OBJ, и он работает, но FPS падает до ~ 3 после 500 полигонов, 1000 полигонов, равных задержке ~ 10сек, и 2000+ полигонов, равных остановке и сбоям.

мой C ++ /Приложение Qt загружает 1 миллион полигонов около 15-20 FPS, я с подозрением отношусь к оберткам PyOpengl (ctypes) и PyQt (sip).

кто-нибудь пытался загрузить модели с высоким разрешением в приложения PyOpengl и PyQt, чтобыпомогите мне?

Редактировать: я использовал "объекты буфера вершин" для загрузчика OBJ, поэтому не имею ничего общего с процессором.

1 Ответ

4 голосов
/ 15 февраля 2012

Советы по производительности для Python + OpenGL, от http://pyopengl.sourceforge.net/ctypes/using.html

Python (в настоящее время) довольно медленный язык из-за невероятной универсальности его модели исполнения. Это означает, что некоторые подходы к кодированию OpenGL, которые будут хорошо работать на языке, таком как C или C ++, будут мучительно медленными в Python. Ключевая идея, которую нужно помнить, заключается в том, что, насколько это возможно, вы хотите перенести работу итерации и повторения в реализацию OpenGL (которая реализована в C и / или Hardware).

Существует два основных подхода для достижения этой цели:

  • Использовать геометрию на основе массива
  • Использовать списки отображения

РЕШИТЬ:

Я решаю проблему с производительностью, используя Ctypes, просто напишу небольшую оболочку вокруг моего приложения C ++ (теперь в основном C) и использую PyQt для графического интерфейса и виджета GL. - Я получаю 10 FPS за ~ 1 миллион полигонов, производительность и очень рекомендую !!

...