Документация Python неофициальный перевод

39.8. glGraphics 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 – Константы, используемые с модулем glDEVICE – Constants used with the gl module

Устарело с версии 2.6: Модуль DEVICE удалён в Python 3.

Этот модуль определяет константы, используемые Graphics Library от Silicon Graphics, которые программисты на C находят в заголовочном файле <gl/device.h>. Подробнее читайте в исходном файле модуля.

39.10. GL – Константы, используемые с модулем glGL – Constants used with the gl module

Устарело с версии 2.6: Модуль GL удалён в Python 3.

Этот модуль содержит константы, используемые Graphics Library от Silicon Graphics из заголовочного файла C <gl/gl.h>. Подробнее читайте в исходном файле модуля.