39.8. gl – Graphics Library интерфейс¶gl – Graphics Library interface
Устарело с версии 2.6: Модуль gl удалён в Python 3.
Этот модуль предоставляет доступ к Graphics Library от Silicon Graphics. Он доступен только на машинах Silicon Graphics.
Предупреждение
Некоторые некорректные вызовы библиотеки GL приводят к дампу ядра интерпретатора Python. В частности, использование большинства вызовов GL небезопасно до открытия первого окна.
Модуль слишком велик, чтобы документировать его здесь полностью, но следующее должно помочь вам начать работу. Соглашения о параметрах для функций C преобразуются в Python следующим образом:
Все значения (short, long, unsigned) int представляются целыми числами Python.
Все значения float и double представляются числами с плавающей точкой Python. В большинстве случаев также допускаются целые числа Python.
Все массивы представляются одномерными списками Python. В большинстве случаев также допускаются кортежи.
Все строковые и символьные аргументы представляются строками Python, например,
winopen('Hi There!')иrotate(900, 'z').Все целые (short, long, unsigned) аргументы или возвращаемые значения, которые используются только для указания длины массива-аргумента, опускаются. Например, вызов 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). Точки могут быть двумерными или трёхмерными, но все должны иметь одинаковую размерность. Значения float и int можно смешивать. Точки всегда преобразуются в трёхмерные точки двойной точности с предположениемz = 0.0при необходимости (как указано в man-странице), и для каждой точки вызывается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)¶ Единственный аргумент этих функций задаёт желаемый размер буфера выбора (pick или select).
-
gl.endpick()¶ -
gl.endselect()¶ Эти функции не имеют аргументов. Они возвращают список целых чисел, представляющих используемую часть буфера выбора. Не предусмотрено метода для обнаружения переполнения буфера.
Вот небольшой, но полный пример программы GL на Python:
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: привязка OpenGL для Python
Также доступен интерфейс к OpenGL; смотрите информацию о проекте PyOpenGL онлайн по адресу http://pyopengl.sourceforge.net/. Это может быть лучшим вариантом, если не требуется поддержка оборудования SGI примерно до 1996 года.
39.9. DEVICE – Константы, используемые с модулем gl¶DEVICE – Constants used with the gl module
Устарело с версии 2.6: Модуль DEVICE удалён в Python 3.
Этот модуль определяет константы, используемые Graphics Library от Silicon Graphics, которые программисты на C находят в заголовочном файле <gl/device.h>. Подробнее читайте в исходном файле модуля.
39.10. GL – Константы, используемые с модулем gl¶GL – Constants used with the gl module
Устарело с версии 2.6: Модуль GL удалён в Python 3.
Этот модуль содержит константы, используемые Graphics Library от Silicon Graphics из заголовочного файла C <gl/gl.h>. Подробнее читайте в исходном файле модуля.