叙情的な余談
数ヶ月前、私は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/の資料に感謝します