20.8 gl -- Graphics Library インターフェース

IRIXプラットフォームで利用できます。

このモジュールはSilicon GraphicsのGraphics Libraryへのアクセスを 提供します。 Silicon Graphicsマシン上だけで利用可能です。

警告: GLライブラリの不適切な呼び出しによっては、Pythonインタープリタがコアを吐 き出すことがあります。 特に、GLのほとんどの関数では最初のウィンドウを開く前に呼び出すのは安全で はありません。

このモジュールはとても大きいので、ここに全てを記述することはできません が、以下の説明で出発点としては十分でしょう。 Cの関数のパラメータは、以下のような決まりに従ってPythonに翻訳されます:

以下の関数は一般的でないか、引数に特別な決まりを持っています:

varray( argument)
v3d()の呼び出しに相当しますが、それよりも速いです。 argumentは座標のリスト(あるいはタプル)です。 各座標は(x, y, z)あるいは (x, y)のタプルでなければなりません。 座標は2次元あるいは3次元が可能ですが、全て同次元でなければなりません。 ですが、浮動小数点数と整数を混合して使えます。 座標は(マニュアルページにあるように)必要であればz = 0.0と 仮定して、常に3次元の精密な座標に変換され、各座標についてv3d()が 呼び出されます。

nvarray( )
n3fv3fの呼び出しに相当しますが、それらよりも速いです。 引数は法線と座標とのペアからなるシーケンス(リストあるいはタプル)です。 各ペアは座標と、その座標からの法線とのタプルです。 各座標と各法線は(x, y, z)からなるタプルでなけれ ばなりません。 3つの座標が渡されなければなりません。 浮動小数点数と整数を混合して使えます。 各ペアについて、法線に対してn3f()が呼び出され、座標に対して v3f()が呼び出されます。

vnarray( )
nvarray()と似ていますが、各ペアは始めに座標を、2番目に法線を持っ ています。

nurbssurface( s_k, t_k, ctl, s_ord, t_ord, type)
nurbs(非均一有理Bスプライン)曲面を定義します。 ctl[][]の次元は以下のように計算されます: [len(s_k) - s_ord][len(t_k) - t_ord]

nurbscurve( knots, ctlpoints, order, type)
nurbs(非均一有理Bスプライン)曲線を定義します。 ctlpointsの長さは、len(knots) - orderです。

pwlcurve( points, type)
区分線形曲線(piecewise-linear curve)を定義します。 pointsは座標のリストです。 typeN_STでなければなりません。

pick( n)
select( n)
これらの関数はただ一つの引数を取り、pick/selectに使うバッファのサイズを 設定します。

endpick( )
endselect( )
これらの関数は引数を取りません。 pick/selectに使われているバッファの大きさを示す整数のリストを返します。 バッファがあふれているのを検出するメソッドはありません。

小さいですが完全なPythonのGLプログラムの例をここに挙げます:

import gl, GL, time

def main():
    gl.foreground()
    gl.prefposition(500, 900, 500, 900)
    w = gl.winopen('CrissCross')
    gl.ortho2(0.0, 400.0, 0.0, 400.0)
    gl.color(GL.WHITE)
    gl.clear()
    gl.color(GL.RED)
    gl.bgnline()
    gl.v2f(0.0, 0.0)
    gl.v2f(400.0, 400.0)
    gl.endline()
    gl.bgnline()
    gl.v2f(400.0, 0.0)
    gl.v2f(0.0, 400.0)
    gl.endline()
    time.sleep(5)

main()

参考:

PyOpenGL: PythonのOpenGLとの結合
OpenGLへのインターフェースが利用できます; 詳しくはPyOpenGLプロジェクト http://pyopengl.sourceforge.net/から情報を入手できま す。 これは、SGIのハードウェアが1996年頃より前である必要がないので、OpenGLの 方が良い選択かもしれません。

ご意見やご指摘をお寄せになりたい方は、 このドキュメントについて... をご覧ください。