On this page
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
( )- 等同于但比许多
n3f
和v3f
通话快。参数是法线和点对的数组(列表或 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
。
- 定义曲线曲线。 ctlpoints 的长度是
gl.
pwlcurve
(* points , type *)- 定义分段线性曲线。 * points *是 Integration 列表。 类型必须为
N_ST
。
- 定义分段线性曲线。 * points *是 Integration 列表。 类型必须为
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
还提供了 OpenGL 的接口。请在线http://pyopengl.sourceforge.net/查看有关 PyOpenGL 项目的信息。如果不需要从 1996 年之前开始支持 SGI 硬件,则这可能是一个更好的选择。
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 *使用的常量。阅读模块源文件以获取详细信息。