现在的位置: 首页 > 综合 > 正文

OpenGL ES之glFrustum函数

2018年05月05日 ⁄ 综合 ⁄ 共 781字 ⁄ 字号 评论关闭

名称:

glFrustum—— 使用一个透视矩阵乘以当前矩阵

函数原型:

void glFrustumf(GLfloat left,  GLfloat right,  GLfloat bottom,  GLfloat top,  GLfloat near,  GLfloat far);

void glFrustumx(GLfixed left,  GLfixed right,  GLfixed bottom,  GLfixed top,  GLfixed near,  GLfixed far);

函数参数:

left,right         指定左边和右边垂直切面的坐标

bottom,top    指定下边和上边水平切面的坐标

near,far         指定近端和远端深度切面的距离

描述:

glFrustum描述了一个产生透视投影的透视矩阵。这个矩阵乘以当前矩阵的积,将代替当前矩阵,当glMultMatrix以如下参数被调用时:

通常,矩阵模式是GL_PROJECTION, 假设眼睛的位置在(0,0,0), (left, bottom, -near) 和 (right, top,  -near)指明了近切面的点,并且被映射到窗口的左下角和右上角。-far指明了远切面的位置。near 和 far都必须是正数

使用 glPushMatrix 或 glPopMatrix来保存或恢复缩放前的坐标系统。

注意:

深度缓冲区的精度受到指定的near和far值的影响。far和near的比例越大,区分临近表面的有效深度缓冲区就越少。如果,

那么,将有大概位的深度缓冲区精度被丢失。因为,当near接近0的时候,r就接近于无穷,所以near一定不要设置为0.

错误:

GL_INVALID_VALUE         如果near和far不为整数,left等于right,top等于bottom,near等于far,那么将产生GL_INVALID_VALUE错误。

抱歉!评论已关闭.