Запускаємо OpenGL на python3 (ubuntu)

Ліричний відступ

Кілька місяців тому вирішив таки вивчити Python. Але ... тільки сунувшись у все це середовище, переді мною став вибір: вивчати відносно новий python3 або python2.7. Вибір упав у бік python 3, нехай на ньому працює лише мала кількість того, що вже є під python2.7, та й просто цікаво було взяти участь у розвитку мови. Нещодавно постала потреба візуалізації деяких даних (саме в openGL), тому було вирішено розібратися, що і як зібрати все воєдино і розповісти про це хабражителям. Стаття орієнтована в першу чергу на новачків у python (таких як я), і написана в стилі «встанови те й те», тому прохання старожилам не кидатися тапками і поставитися з розумінням.

Готуємось

Оскільки нам доведеться збирати бібліотеки, нам потрібно поставитиpython3-dev.python3-setuptoolsнам потрібний для встановленняeasy_install3. Ставимо:

Тепер можна й бібліотеки зібрати.

Бібліотеки

Ставимо pip для python3 через встановленийeasy_install3:

pipвстановлений, тепер можна збирати потрібні нам бібліотеки:

(на момент встановлення актуальною версією pip була 3.2, у минулому, майбутньому або паралельному всесвіті це число може відрізнятися). Для роботи модуля OpenGL.GLUT ставимо freeglut:

Тепер все готове, і можна спробувати запускати приклади.

Не все так просто

Йдемо на сайт http://nehe.gamedev.net/tutorial, вивчаємо приклади, качаємо код на python, перевіряємо працездатність на python2.7 (якщо встановлені бібліотеки OpenGL для pytohn2.7 - все робиться аналогічним чином, pip install numpy PyOpenGL . Качаємо, наприклад, другий приклад, перевіряємо:

ubuntu
намагаємося запустити його на python3, отримуємопомилку:

Переробляємо його за допомогою утиліти 2to3 (на початку це додавання дужок до print ):

, але й тут на нас чекає сюрприз:

Щоб все злетіло, нам потрібно передати аргументи командного рядка в glutInit():

Запускаємо ще раз:

Так-так-так, а це що ще ... Після недовгого ковтання виявляємо, що заголовок вікна має бути байтовим рядком, відповідно, додаємо «b» перед рядком:

запускаємо

українські літери, на жаль, не підтримують (мені було особливо не потрібно, тому я не став розбиратися). Ну і можна порадіти працюючому OpenGL на нашій конячці:)

ubuntu