PyOpenGL はじめました:OpenGL Utility Toolkit (GLUT)

PyOpenGL はじめました記事一覧
OpenGL Utility Toolkit (GLUT)

《著》小粒ちゃん《監修》小泉ひよ子とタマゴ倶楽部
第0版♪2006/09/21 ● 第1版♪2009/04/07

■ 概要

GLUT を利用して、ウィンドウを開く(閉じる)方法を紹介します。

■ 関連記事

概要:GLUT

GLUTOpenGL Utility Toolkit〕は、特定のウィンドウシステムに依存しない、OpenGL のコードを記述するための API です。ここでは、Python バインディングについて解説します。

事例:C/GLUT

ウィンドウを開くだけなら、次のように記述します。

#include 

void display(void) {}

int main(int argc, char *argv[]) {
    glutInit(&argc, argv);
    glutCreateWindow("Hello World");
    glutDisplayFunc(display);
    glutMainLoop();
    return 0;
}

事例:Python/GLUT

C 言語の事例と同等のコードを、Python では、次のように記述します。

from OpenGL.GLUT import *
from sys import argv

def display(): pass

if __name__ == '__main__':
    glutInit(argv)
    glutCreateWindow("Hello World")
    glutDisplayFunc(display)
    glutMainLoop()   

プログラミング言語は違っても、C プログラマーなら、Python で記述したコードの概要は理解できるでしょう。大きな違いは、C のような main が必須でないことです。

glutDisplayFunc には、ウィンドウを再描画する関数 display を指定します。すると、ウィンドウを開いたり、背後に隠れていたウィンドウ(その一部)が前面に現れるときに、関数 display を呼び出します。ここでは、本体が空 pass なので何も表示されません。

これを実行すると、次のようなウィンドウが現れます。


これは、PyOpenGL 版の Hello World とも言うべきものです。ウィンドウ内には、何も描かれません。タイトルに "Hello World" と書かれているだけです。

何が問題か
% python2.5 example1-1.py -s0
^Z
[1]+  Stopped                 python2.5 example1-1.py -s0
% kill %1

[1]+  Stopped                 python2.5 example1-1.py -s0

デモを中断するには(バックグラウンド)プロセスを終了 kill させます。
》作業中です《

Tips:PyOpenGL

PyOpenGL/GLUT GLUT API/英 GLUT API/和 Description
glutInit 2.1 glutInit 2.1 glutInit initialize the GLUT library.
ライブラリを初期化します
glutCreateWindow 4.1 glutCreateWindow 4.1 glutCreateWindow creates a top-level window.
最上位ウィンドウを生成します
glutMainLoop 3.1 glutMainLoop 3.1 glutMainLoop enters the GLUT event processing loop.
イベント処理ループに入ります

Last updated♪09/04/18