39.8. gl — 图形库接口 — Python 文档
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()
- 相当于但比许多
n3f
和v3f
调用快。 参数是法线和点对的数组(列表或元组)。 每对都是一个点和该点的法线的元组。 每个点或法线必须是坐标(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 使用的常量。 阅读模块源文件以了解详细信息。