Программный бигтинг Pygame против аппаратного чертежа PyOpenGL - PullRequest
0 голосов
/ 18 апреля 2020

Мой вопрос, на самом деле это не вопрос, а скорее факт:

В моем приложении я использую PyGame для рисования спрайтов. В общем, я делаю следующее:

surface.blit(image, [other_args])

Теперь это довольно быстро, если спрайты не слишком велики. Но теперь я хочу попытаться перейти на OpenGL (используя библиотеку PyOpenGL), но я не знаю, стоит ли это того, это займет некоторое время и рефакторинг моего приложения.

Итак, учитывая:

  • Я не могу пакетировать или объединять спрайты (я не могу поместить все в один массив вершин и просто выполнить команду рисования), и я не могу выполнить создание экземпляров, потому что спрайты сильно отличаются
  • Существует действительно большое количество спрайтов

.. стоит ли переходить на PyOpenGL или я должен придерживаться только алгоритма блиттинга PyGame по умолчанию?

1 Ответ

0 голосов
/ 23 апреля 2020

Я перешел из Pygame Sprites в pyOpenGl в одном из моих проектов, как год за go. Мне не пришлось много работать после того, как я понял, как работает VertexArrayBuffers (вы, безусловно, должны с этим познакомиться!), Чтобы переводить не только мой код, но и модернизировать мою систему рендеринга. Тем не менее, чтобы доработать все, что дало мне pyglet, отображение, например, текста заняло некоторое время ...

Если вы хотите создать продуктивное приложение, вы должны помнить, что python с openGL не очень быстро, или рендеринг opengl в python требует гораздо больше процессора, кажется. Поскольку у меня нет такого же проекта в Java или C ++, я не могу измерить разницу, но рендеринг большого трехмерного мира и HUD с текстами приводит к некоторому отставанию, даже без ИИ, партицелей, теней и многого другого ...

В целом, создание прототипа ur-проекта в python с последующим абстрагированием потребностей архитектуры, которую вы хотите достичь, и чем перевод на более подходящий язык должен быть быстрее (разработка), чем восстановление с нуля в середине проекта.

TL; DR: если вы действительно хотите придерживаться python: попробуйте и выясните, как ваш код загружается вашей машиной, перемещение кода в pyOpenGl не должно быть проблемой

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...