39.8。 gl — グラフィックライブラリインターフェース
バージョン2.6以降非推奨: gl モジュールはPython3で削除されました。
このモジュールは、シリコングラフィックスグラフィックスライブラリへのアクセスを提供します。 これは、SiliconGraphicsマシンでのみ使用できます。
警告
GLライブラリへの不正な呼び出しにより、Pythonインタープリターがコアをダンプします。 特に、最初のウィンドウが開かれる前に、ほとんどのGL呼び出しを使用することは安全ではありません。
モジュールが大きすぎてここに完全に文書化することはできませんが、以下は開始するのに役立つはずです。 C関数のパラメーター規則は、次のようにPythonに変換されます。
すべての(short、long、unsigned)int値は、Python整数で表されます。
すべてのfloat値とdouble値は、Python浮動小数点数で表されます。 ほとんどの場合、Python整数も使用できます。
すべての配列は、1次元のPythonリストで表されます。 ほとんどの場合、タプルも許可されます。
すべての文字列および文字引数は、Python文字列で表されます(例:
winopen('Hi There!')
およびrotate(900, 'z')
)。配列引数の長さを指定するためにのみ使用されるすべての(短い、長い、符号なし)整数引数または戻り値は省略されます。 たとえば、Cコール
lmdef(deftype, index, np, props)
としてPythonに翻訳されます
lmdef(deftype, index, props)
出力引数は引数リストから省略されます。 代わりに、関数の戻り値として送信されます。 複数の値を返す必要がある場合、戻り値はタプルです。 C関数に通常の戻り値(前の規則のために省略されていない)と出力引数の両方がある場合、戻り値はタプルの最初に来ます。 例:Cコール
getmcolor(i, &red, &green, &blue)
としてPythonに翻訳されます
red, green, blue = getmcolor(i)
次の関数は非標準であるか、特別な引数規則があります。
- gl.varray(argument)
v3d()
呼び出しの数と同等ですが、それよりも高速です。 引数は、ポイントのリスト(またはタプル)です。 各ポイントは、座標(x, y, z)
または(x, y)
のタプルである必要があります。 ポイントは2次元または3次元の場合がありますが、すべて同じ次元である必要があります。 ただし、float値とint値は混在する場合があります。 ポイントは、必要に応じてz = 0.0
を想定して(manページに示されているように)常に3D倍精度ポイントに変換され、ポイントごとにv3d()
が呼び出されます。
- gl.nvarray()
n3f
およびv3f
呼び出しの数と同等ですが、それよりも高速です。 引数は、法線と点のペアの配列(リストまたはタプル)です。 各ペアは、ポイントのタプルであり、そのポイントの法線です。 各点または法線は、座標のタプル(x, y, z)
である必要があります。 3つの座標を指定する必要があります。 Float値とint値が混在している可能性があります。 ペアごとに、n3f()
が法線に対して呼び出され、次にv3f()
がポイントに対して呼び出されます。
- gl.vnarray()
nvarray()
に似ていますが、ペアには最初にポイントがあり、次に通常のポイントがあります。
- gl.nurbssurface(s_k, t_k, ctl, s_ord, t_ord, type)
- NURBSサーフェスを定義します。
ctl[][]
の寸法は、[len(s_k) - s_ord]
、[len(t_k) - t_ord]
のように計算されます。
- gl.nurbscurve(knots, ctlpoints, order, type)
- NURBSカーブを定義します。 ctlpointsの長さは
len(knots) - order
です。
- gl.pwlcurve(points, type)
- 区分的線形曲線を定義します。 points はポイントのリストです。 タイプは
N_ST
である必要があります。
- gl.pick(n)
gl.select(n)
- これらの関数の唯一の引数は、選択または選択バッファーの目的のサイズを指定します。
- gl.endpick()
gl.endselect()
- これらの関数には引数がありません。 これらは、選択/選択バッファーの使用された部分を表す整数のリストを返します。 バッファオーバーランを検出する方法はありません。
これは、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:PythonOpenGLバインディング
- OpenGLへのインターフェースも利用できます。 PyOpenGL プロジェクトに関する情報は、 http://pyopengl.sourceforge.net/でオンラインで参照してください。 1996年頃からのSGIハードウェアのサポートが必要ない場合、これはより良いオプションかもしれません。
39.9。 端末 —で使用される定数 gl モジュール
バージョン2.6以降非推奨: DEVICE モジュールはPython3で削除されました。
このモジュールは、Cプログラマーがヘッダーファイル<gl/device.h>
で見つけるSiliconGraphics Graphics Library によって使用される定数を定義します。 詳細については、モジュールのソースファイルをお読みください。
39.10。 GL —で使用される定数 gl モジュール
バージョン2.6以降非推奨: GL モジュールはPython3で削除されました。
このモジュールには、Cヘッダーファイル<gl/gl.h>
のSiliconGraphics Graphics Library で使用される定数が含まれています。 詳細については、モジュールのソースファイルをお読みください。