=========== Basics =========== 依存ライブラリ ============== install python -------------- http://www.python.org/ install pyOpengl ---------------- http://pyopengl.sourceforge.net/ Create window ============= glutの初期化とウィンドウ生成。 :download:`CreateWindow.py ` .. literalinclude:: CreateWindow.py 中身の無いWindowが表示されればOK。 xボタンをクリックして終了する。 このチュートリアルでは以下のコーディング規約を採用する。 * indentはスペース4個 * 一行は80文字 Draw Triangle ============= .. image:: ../img/part1.png 前項で空だったdraw関数の中身を実装する。 :download:`DrawTriangle.py ` .. literalinclude:: DrawTriangle.py :pyobject: draw .. literalinclude:: DrawTriangle.py :pyobject: setup 白い三角形が表示されればOK。 OpenGLでは初期状態では、ウィンドウの左下が(-1, -1)で右上が(1, 1)の座標を持っている。デフォルトの背景は黒、描画色は白となっている。 glBegin〜glEndの間にglVertexを呼び出すことで点を打つことができる。複数の点がどうのような関係になるかをglBeginの引数GL_TRIANGLESで指定している。GL_TRIANGLESの意味は、glVertex3回で三角形ひとつですよという意味。 ResizeとViewport ================ WindowのResizeイベントのコールバック実装と、OpenGL描画領域(ビューポート)のサイズ指定。 :download:`Viewport.py ` .. literalinclude:: Viewport.py :pyobject: resize .. literalinclude:: Viewport.py :pyobject: setup ウインドウの拡大・縮小に三角形が伸び縮みすればOK。 * 内部座標(-1, -1)〜(+1, +1)がビューポートで指定したピクセル座標にコピーされる。 * 内部座標は、x軸は右が+、y軸は上が+ Mouseコールバック ================= 視点操作を説明する前にマウスイベントの処理方法について。 :download:`Mouse.py ` .. literalinclude:: Mouse.py :pyobject: mouse .. literalinclude:: Mouse.py :pyobject: motion .. literalinclude:: Mouse.py :pyobject: setup ボタンのクリック、ポインタの移動を受け取ってprintする。 素のglutではホイールのイベントは取得できない(たぶん)。 Keyboardコールバック ==================== ついでにキーボードイベント。 :download:`Keyboard.py ` .. literalinclude:: Keyboard.py :pyobject: keyboard .. literalinclude:: Keyboard.py :pyobject: setup ESCまたは'q'を押すと終了するようになった。