python3でOpenGLを実行する(ubuntu)

叙情的な余談



数ヶ月前、私はPythonを学ぶことにしました。 しかし... ...この環境全体に隠れているだけで、私は選択肢がありました:比較的新しいpython3またはpython2.7を学ぶことです。 たとえpython2.7の下に既に存在するものがほんの少ししか動作しないとしても、選択はpython 3の方向に落ち、言語の開発に参加することはただ面白かったです。

最近、いくつかのデータを視覚化する必要がありました(つまり、openGLで)ので、何をどのように把握し、すべてをまとめて、それについてホーカーに伝えることにしました。

この記事は主にpython(私のような)の初心者を対象としており、「これをインストールする」というスタイルで書かれているので、ベテランはスリッパを投げて理解して扱わないでください。



準備する



ライブラリを構築する必要があるため、 python3-devをインストールする必要があります。 python3-setuptools easy_install3をインストールする必要があります。

私たちは置きます:

sudo apt-get install python3-dev python3-setuptools
      
      





これで、ライブラリを収集できます。



図書館


インストール済みの easy_install3を介してpython3のpipを配置します

 sudo easy_install3 pip
      
      





pipがインストールされ、必要なライブラリを収集できるようになりました。

 sudo pip-3.2 install numpy PyOpenGL PyOpenGL_accelerate
      
      





(インストールの時点で、pipの現在のバージョンは3.2でしたが、過去、未来、またはパラレルユニバースでは、この数は異なる場合があります)。

OpenGL.GLUTモジュールが機能するには、freeglutを設定します。

 sudo apt-get install freeglut3
      
      





これですべての準備が整いました。サンプルを実行してみてください。



それほど単純ではない



サイトhttp://nehe.gamedev.net/tutorialにアクセスし、サンプルを学習し、pythonコードをダウンロードし、python2.7のパフォーマンスを確認します(pytohn2.7のOpenGLライブラリがインストールされている場合-すべて同じ方法で行われ、pip install numpy PyOpenGL PyOpenGL_accelerate



) 。

たとえば、 2番目の例をダウンロードして、以下を確認します。



python3で実行しようとすると、エラーが発生します。

 $ python3 lesson02.py File "lesson02.py", line 153 print "Hit ESC key to quit." ^ SyntaxError: invalid syntax
      
      





2to3ユーティリティを使用して処理します(最初はprint



するブラケットを追加していました):

 RefactoringTool: Skipping implicit fixer: buffer RefactoringTool: Skipping implicit fixer: idioms RefactoringTool: Skipping implicit fixer: set_literal RefactoringTool: Skipping implicit fixer: ws_comma RefactoringTool: Refactored test.py --- lesson02.py (original) +++ lesson02.py (refactored) @@ -150,6 +150,6 @@ glutMainLoop() # Print message to console, and kick off the main to get it rolling. -print "Hit ESC key to quit." +print("Hit ESC key to quit.") main() RefactoringTool: Files that need to be modified: RefactoringTool: lesson02.py
      
      





、しかし、ここで私たちは驚きのためにいます:

 Hit ESC key to quit. Traceback (most recent call last): File "lesson02.py", line 154, in <module> main() File "lesson02.py", line 109, in main glutInit(()) File "/usr/local/lib/python3.2/dist-packages/OpenGL/GLUT/special.py", line 318, in glutInit holder[i] = arg TypeError: bytes or integer address expected instead of str instance
      
      





すべてが離陸するために、コマンドライン引数をglutInit()に渡す必要があります:

 glutInit(sys.argv)
      
      





再実行:

 Hit ESC key to quit. Traceback (most recent call last): File "test.py", line 154, in <module> main() File "test.py", line 127, in main window = glutCreateWindow("Jeff Molofee's GL Code Tutorial ... NeHe '99") ctypes.ArgumentError: argument 1: <class 'TypeError'>: wrong type
      
      





まあまあ、それ以外のこと...短いGoogle検索の後、ウィンドウタイトルはそれぞれバイト文字列であることがわかり、行の前に「b」を追加します。

 window = glutCreateWindow(b"Ura, vzletelo!")
      
      





そして幸せについて!







残念ながら、ロシア語の文字はサポートされていません(実際には必要ないので、理解できませんでした)。

まあ、あなたは私たちの馬でOpenGLを楽しむことができます:)







ファイルを含むアーカイブへのリンク:

Dropbox

ご清聴ありがとうございました。この記事が誰かのお役に立てば幸いです。 批判や提案を喜んで受け入れます。

ソース



サイトhttp://nehe.gamedev.net/の資料に感謝します



All Articles