39.8. gl — 图形库接口 — Python 文档

来自菜鸟教程
Python/docs/2.7/library/gl
跳转至:导航、​搜索

39.8. 高尔 — 图形库界面

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


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

警告

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


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

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

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

  • 所有数组都由一维 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 转换为 3D 双精度点(如手册页中所示),并为每个点调用 v3d()
gl.nvarray()
相当于但比许多 n3fv3f 调用快。 参数是法线和点对的数组(列表或元组)。 每对都是一个点和该点的法线的元组。 每个点或法线必须是坐标 (x, y, z) 的元组。 必须给出三个坐标。 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 是一个点列表。 type 必须是 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:Python OpenGL 绑定
也可以使用 OpenGL 接口; 在 http://pyopengl.sourceforge.net/ 在线查看有关 PyOpenGL 项目的信息。 如果不需要支持大约 1996 年之前的 SGI 硬件,这可能是一个更好的选择。


39.9. 设备 — 用于的常量高尔模块

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


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


39.10. GL — 用于的常量高尔模块

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


该模块包含来自 C 头文件 <gl/gl.h> 的 Silicon Graphics Graphics Library 使用的常量。 阅读模块源文件以了解详细信息。