Является ли PyOpenGL хорошим местом для начала изучения программирования на opengl? - PullRequest
9 голосов
/ 03 июня 2010

Я хочу начать изучать OpenGL, но на самом деле я не хочу изучать другой язык, чтобы это делать. Я уже довольно хорошо знаю Python и наслаждаюсь языком. Я просто хочу знать, насколько это близко к обычному API? Смогу ли я довольно легко следовать учебникам и книгам без особых проблем?

Я знаю, что C ++ дает лучшую производительность, но я могу просто ошибиться с PyOpenGL?

Ответы [ 2 ]

13 голосов
/ 03 июня 2010

С учетом того, что я сам очень мало программировал на OpenGL, я считаю, что для целей обучения PyOpenGL - хороший выбор. Основная причина в том, что PyOpenGL, как и большинство других оболочек OpenGL, является лишь тонкой оболочкой вокруг API OpenGL.

Одним большим преимуществом PyOpenGL является то, что, хотя в C вам приходится беспокоиться о вызове правильной команды glVertex3{dfiX}, Python позволяет просто написать glVertex3(x,y,z), не беспокоясь о том, чтобы сообщить Python, какой тип аргумента вы передали. звучит не так уж и сложно, но часто гораздо проще использовать типизацию Python по утке, чем чрезмерную озабоченность статической типизацией.

Методы OpenGL почти полностью заключены в методы Python, поэтому, пока вы будете писать на Python, используемые вами алгоритмы и вызовы методов идентичны написанию OpenGL на любом другом языке. Но поскольку вы пишете на Python, у вас будет гораздо меньше возможностей совершать «глупые» ошибки при правильном использовании указателей, управлении памятью и т. Д., Которые просто съедят ваше время, если вы будете изучать API на C или C ++. Например,

0 голосов
/ 03 июня 2010

PyOpenGL

Не думаю, что это хороший выбор. На мой взгляд в C / C ++ легче поиграться с вашим кодом OpenGL - начните с простого приложения, затем добавьте шейдер, затем добавьте некоторые геометрические функции, создайте генератор текстур / геометрии, создайте сцену с помощью CSG и т. Д. Вы знаете - веселиться, играть с кодом, экспериментировать и изучать что-то в процессе. Честно говоря, я просто не вижу себя в питоне. Конечно, возможно программирование OpenGL на Python, но я не вижу причин, чтобы это делать. Кроме того, некоторые функции OpenGL принимают указатели памяти в качестве аргументов, и, хотя, вероятно, существует класс (или дюжина альтернатив) для этого случая, я не вижу причины использовать их, когда в C / C ++ доступен традиционный способ действий, особенно когда я думаю о количестве оберток, которые использует код Python для передачи вектора или массива из них в функцию OpenGL. Это выглядит как усложнение без реальной причины. Плюс заметное снижение производительности, особенно при использовании «RAW» OpenGL.

Кроме того, если вы собираетесь делать игры, очень вероятно, что вам придется использовать C ++ или какой-либо другой язык, не относящийся к python.

P.S. Я сделал достаточно OpenGL-программирования, много DirectX-программирования, но я специализируюсь на C ++ и использую python только для определенных алгоритмических тестов, инструментов и скриптов.

...