Я рассказал EuroPython о моих любительских попытках запустить OpenGL из Python:
http://pyvideo.org/video/381/pycon-2011--algorithmic-generation-of-opengl-geom
Последняя версия кода, о котором я говорю, находится здесь:
https://github.com/tartley/gloopy
Это объявлено как «библиотека», но это было наивно с моей стороны: это набор личного экспериментального кода.
Тем не менее, это демонстрирует, что вы можете перемещаться по сотням битов геометрии на скорости 60 кадров в секунду из Python.
Хотя приведенная выше демонстрация довольно проста в том смысле, что она использует просто геометрию и нетекстурированные грани, я обнаружил, что более детальная геометрия, наложение текстуры или другие более современные графические эффекты не оказывают существенного влияния на частоту кадров. Или, по крайней мере, они не влияют на это хуже, чем использование тех же эффектов в программе на Си. Они запускаются на GPU, поэтому, если ваша программа написана на Python, не имеет никакого значения.
Одна вещь, которая чувствительна к производительности в Python, - это если вы создаете динамическую геометрию на стороне процессора, например перемещение отдельных вершин в форме, сгибая или плавя форму. Выполнение такого рода вычисления для каждой вершины в Python, затем построение нового массива ctypes из результата, затем передача этой геометрии в GPU, каждый кадр, будет медленным. Вместо этого вы, вероятно, должны делать это в вершинном шейдере.
С другой стороны, если вы просто хотите аффинных преобразований (перемещение объектов вокруг, вращение их, открытие комодов, вращение колес автомобиля, изгиб соединенного манипулятора робота), то все это может быть сделано с помощью графического процессора и факта Ваша программа написана на Python и не влияет на производительность.