39.8. gl-图形库界面

自 2.6 版起弃用:gl模块已在 Python 3 中删除。

该模块提供对 Silicon Graphics * Graphics Library *的访问。它仅在 Silicon Graphics 机器上可用。

Warning

对 GL 库的一些非法调用导致 Python 解释器转储核心。特别是,在打开第一个窗口之前,大多数 GL 调用的使用都是不安全的。

该模块太大,无法在此处完整记录,但是以下内容将帮助您入门。 C 函数的参数约定如下转换为 Python:

  • 所有(短,长,无符号)int 值均由 Python 整数表示。

  • 所有 float 和 double 值均由 Python 浮点数表示。在大多数情况下,也允许使用 Python 整数。

  • 所有数组均由一维 Python 列表表示。在大多数情况下,也可以使用 Tuples。

  • 所有字符串和字符参数均由 Python 字符串表示,例如winopen('Hi There!')rotate(900, 'z')

  • Ellipsis所有(短,长,无符号)整数参数或仅用于指定数组参数长度的返回值。例如,C 调用

lmdef(deftype, index, np, props)

被翻译成 Python

lmdef(deftype, index, props)
  • 输出参数从参数列表中Ellipsis;它们将作为函数返回值传输。如果必须返回多个值,则返回值为 Tuples。如果 C 函数同时具有常规返回值(由于先前的规则而不会Ellipsis)和输出参数,则返回值在 Tuples 中排在首位。示例:C 调用
getmcolor(i, &red, &green, &blue)

被翻译成 Python

red, green, blue = getmcolor(i)

以下函数是非标准的或具有特殊的参数约定:

  • gl. varray(* argument *)

    • 等同于但比许多v3d()个呼叫快。 * argument *是点的列表(或 Tuples)。每个点必须是坐标(x, y, z)(x, y)的 Tuples。这些点可以是 2 维或 3 维的,但必须全部具有相同的维。浮点数和整数值可以混合使用。pass在必要时假设z = 0.0(如手册页中所示),总是将这些点转换为 3D 双精度点,并为每个点调用v3d()
  • gl. nvarray ( )

    • 等同于但比许多n3fv3f通话快。参数是法线和点对的数组(列表或 Tuples)。每对都是一个点的 Tuples 和该点的法线。每个点或法线必须是坐标(x, y, z)的 Tuples。必须给出三个坐标。浮点数和整数值可以混合使用。对于每Pair,n3f()被称为法线,然后v3f()被称为该点。
  • gl. vnarray ( )

    • nvarray()相似,但两对的第一个指向点,法线第二个指向点。
  • gl. nurbssurface(* s_k t_k ctl s_ord t_ord type *)

    • 定义一个小块曲面。 ctl[][]的尺寸计算如下:[len(s_k) - s_ord][len(t_k) - t_ord]
  • gl. nurbscurve(,* ctlpoints order type *)

    • 定义曲线曲线。 ctlpoints 的长度是len(knots) - order
  • gl. pwlcurve(* points type *)

    • 定义分段线性曲线。 * points *是 Integration 列表。 类型必须为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()

See also

39.9. DEVICE —与 gl 模块一起使用的常量

自 2.6 版起弃用:DEVICE模块已在 Python 3 中删除。

此模块定义 C 程序员在头文件<gl/device.h>中找到的 Silicon Graphics * Graphics Library *使用的常量。阅读模块源文件以获取详细信息。

39.10. GL —与 gl 模块一起使用的常量

自 2.6 版起弃用:GL模块已在 Python 3 中删除。

此模块包含 C 头文件<gl/gl.h>中的 Silicon Graphics * Graphics Library *使用的常量。阅读模块源文件以获取详细信息。