Прочитать на английском

Поделиться через


Функция glFrustum

Функция glFrustum умножает текущую матрицу на матрицу перспективы.

Синтаксис

void WINAPI glFrustum(
   GLdouble left,
   GLdouble right,
   GLdouble bottom,
   GLdouble top,
   GLdouble zNear,
   GLdouble zFar
);

Параметры

left

Координата левой вертикальной плоскости отсечения.

right

Координата правой вертикальной плоскости отсечения.

Нижней

Координата нижней горизонтальной плоскости отсечения.

В начало

Координата нижней горизонтальной плоскости отсечения.

zNear

Расстояния до ближней плоскости отсечения. Должен быть положительным.

zFar

Расстояния до дальней обрезки плоскостей. Должен быть положительным.

Возвращаемое значение

Эта функция не возвращает значение.

Коды ошибок

Следующие коды ошибок могут быть получены функцией glGetError .

Имя Значение
GL_INVALID_ENUM
zNear или zFar не было постуритивным.
GL_INVALID_OPERATION
Функция была вызвана между вызовом glBegin и соответствующим вызовом glEnd.

Комментарии

Функция glFrustum описывает матрицу перспективы, которая создает перспективную проекцию. Параметры (left, bottom, zNear) и (right, top, zNear) указывают точки на ближней плоскости обрезки, которые сопоставляются с левым и верхним правым углами окна соответственно, при условии, что глаз находится в (0,0,0). Параметр zFar указывает расположение дальней плоскости отсечения. И zNear, и zFar должны быть положительными. Соответствующая матрица показана на следующем рисунке.

Схема, показывающая матрицу перспективы, создающую перспективную проекцию. Уравнения, показывающие функцию glFrustum, описывающую матрицу перспективы.

Функция glFrustum умножает текущую матрицу на эту матрицу, при этом результат заменяет текущую матрицу. То есть, если M является текущей матрицей, а F — матрицей перспективы frustum, то glFrustum заменяет M на M F.

Используйте glPushMatrix и glPopMatrix для сохранения и восстановления текущего стека матрицы.

На точность буфера глубины влияют значения, указанные для zNear и zFar. Чем больше отношение zFar к zNear , тем менее эффективным будет буфер глубины при различии поверхностей, которые находятся рядом друг с другом. If

Уравнение, показывающее отношение

Примерно 2 бита журнала(r) точности буфера глубины теряются. Так как r приближается к бесконечности, как zNear приближается к нулю, никогда не следует задавать zNear равным нулю.

Следующие функции извлекают сведения о glFrustum:

glGet с аргументом GL_MATRIX_MODE

glGet с аргументом GL_MODELVIEW_MATRIX

glGet с аргументом GL_PROJECTION_MATRIX

glGet с аргументом GL_TEXTURE_MATRIX

Требования

Требование Значение
Минимальная версия клиента
Windows 2000 Professional [только классические приложения]
Минимальная версия сервера
Windows 2000 Server [только классические приложения]
Заголовок
Gl.h
Библиотека
Opengl32.lib
DLL
Opengl32.dll

См. также раздел

glBegin

glEnd

glGet

glMatrixMode

glMultMatrix

glOrtho

glPopMatrix

glPushMatrix

glViewport