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
zNearzFar 不是后缀。
GL_INVALID_OPERATION
在对 glBegin 的调用和对 glEnd 的相应调用之间调用了函数。

备注

glFrustum 函数描述生成透视投影的透视矩阵。 (zNear) 和 (zNear) 参数分别指定映射到窗口左下角和右上角的近剪裁平面上的点,假设眼睛位于 (0,0,0) 。 zFar 参数指定远距剪切平面的位置。 zNearzFar 都必须为正数。 下图中显示了相应的矩阵。

显示生成透视投影的透视矩阵的关系图。显示描述透视矩阵的 glFrustum 函数的公式。

glFrustum 函数将当前矩阵乘以此矩阵,结果将替换当前矩阵。 也就是说,如果 M 是当前矩阵,F 是视锥透视矩阵,则 glFrustum 将 M 替换为 M F。

使用 glPushMatrixglPopMatrix 保存和还原当前矩阵堆栈。

深度缓冲区精度受为 zNearzFar 指定的值的影响。 zFarzNear 的比率越大,深度缓冲区在区分彼此靠近的曲面方面的效率就越低。 如果

显示远近比的公式。

大约 对数2 (r) 位深度缓冲区精度丢失。 由于 r 接近无穷大, 因为 zNear 接近零,因此不应将 zNear 设置为零。

以下函数检索有关 glFrustum 的信息:

带参数GL_MATRIX_MODE的 glGet

带参数GL_MODELVIEW_MATRIX的 glGet

带参数GL_PROJECTION_MATRIX的 glGet

带参数GL_TEXTURE_MATRIX的 glGet

要求

要求
最低受支持的客户端
Windows 2000 Professional [仅限桌面应用]
最低受支持的服务器
Windows 2000 Server [仅限桌面应用]
标头
Gl.h

Opengl32.lib
DLL
Opengl32.dll

另请参阅

glBegin

glEnd

glGet

glMatrixMode

glMultMatrix

glOrtho

glPopMatrix

glPushMatrix

glViewport