pyopengl: это могло заменить C++?

Я запускаю курс компьютерной графики, и я должен выбрать язык.

Выбор между C++ и Python. У меня нет проблемы с C++, Python является происходящей работой. Таким образом, я думал для потери работоспособности по дороге Python, с помощью pyopengl для графической части.

Я услышал, хотя, та производительность является проблемой.

Python / pyopengl достаточно сформировавшийся для оспаривания C++ на производительности?

Я понимаю, что это - съемка общим планом, но я хотел бы услышать Ваши мысли, события в использовании pyopengl.

Заранее спасибо.

14
задан Tom 21 March 2010 в 21:10
поделиться

4 ответа

Это ОЧЕНЬ зависит от содержания вашего курса компьютерной графики. Если вы делаете что-то вроде вводного курса, который я преподавал в прошлом, это в основном вращение кубов и сфер, некоторое наложение текстур и некоторая вертексная анимация, вот и все. В этом случае Python будет вполне адекватным, если предположить, что вы можете обойти Unpythonic (и, честно говоря, не-C ++) парадигму конечного автомата OpenGL.

Для таких вещей, как математические вычисления с матрицей, вы можете использовать Numpy, ядро ​​которого написано на C и действительно работает довольно быстро. Вы будете работать быстрее, выполнять итерации быстрее и, скорее всего, получите больше удовольствия.

Однако, если вы изучаете какой-нибудь хардкорный, ультрасовременный курс компьютерной графики, состоящий из миллионов треугольников на сцену, со скином, анимацией, всем, придерживайтесь C ++.

Если ваш класс предоставил вам выбор, вероятно, можно с уверенностью сказать, что Python будет в порядке.

Если вы хотите применить свои знания в реальной работе в компьютерной графике, то почти все игры и графические движки написаны на C или C ++, а Python (или Lua) остается языком сценариев.

26
ответ дан 1 December 2019 в 07:19
поделиться

Python - отличный язык, но это не тот инструмент для графики. И если вы хотите сделать что-то удаленно продвинутое, вам придется использовать непифонические библиотеки, и в итоге вы получите уродливый код C, написанный на Python.

2
ответ дан 1 December 2019 в 07:19
поделиться

Python - это динамический язык, который интерпретируется и компилируется во время выполнения и как таковой не может иметь лучшую производительность, чем C++ - посмотрите этот пост для сравнения нескольких языков программирования.

Еще одна веская причина предпочесть C++ - параллельное выполнение. Многие задачи в CG можно оптимизировать, разделив их на несколько потоков, которые выполняются параллельно - когда-нибудь пробовали запустить новый поток с помощью Python?

0
ответ дан 1 December 2019 в 07:19
поделиться

Вот мой личный опыт:

Когда я впервые услышал о PyOpenGL, я был абсолютно взволнован . OpenGL на моем любимом языке? Иметь дело! Так что я начал самостоятельно изучать программирование 3D-графики.

Я просмотрел несколько руководств и книг, таких как NeHe и OpenGL SuperBible . Поскольку функции PyOpenGL идентичны функциям самого OpenGL (с очень незначительными отличиями), было несложно воспроизвести большинство примеров. Кроме того, у NeHe есть много исходного кода на Python, созданного другими.

Прошло немного времени после того, как (около 2 недель) я прочитал о Quaternions и сам реализовал его на Python. Теперь у меня есть среда с поддержкой GLSL с полными возможностями взаимодействия с 3D-камерой. Я сделал простой шейдер Фонга и использовал кватернионы для вращения камеры. У меня пока нет ни одного хита в исполнении.

Спустя несколько месяцев я вернулся к этому коду.

Я попытался реализовать Python Octree, и когда я перешел на 8 уровней (256x256x256 вокселей), для вычислений потребовалось более 2 ГБ ОЗУ, и через несколько минут это все еще не выполнено. Я понял, что когда вы храните много объектов в Python, это не просто простая структура, как в C ++. Именно здесь я понял, что мне нужно вычленить это, написать это на C ++, а затем снова склеить с помощью вызова Python.

Как только я закончу с этим, я сообщу вам, если я вспомню. ;]

(Отвечая на ваш вопрос, нет, Python никогда не заменит C ++. У этих двух языков разные цели и разные сильные стороны.)

4
ответ дан 1 December 2019 в 07:19
поделиться
Другие вопросы по тегам:

Похожие вопросы: