OpenGL函数思考-glOrtho

 

OpenGL函数思考-glOrtho

函数原型:

void glOrtho(GLdouble left,GLdouble right,GLdouble bottom,GLdouble top,GLdouble near,GLdouble far)

参数说明:

函数说明:

        glOrtho()这个函数设置正摄投影矩阵,一般在执行命令glMatrixMode(GL_PROJECTION)和glLoadidentity()之后使用;使用glOrtho函数可以将当前的可视空间设置为正投影空间。基参数的意义如图,如果绘制的图空间本身就是二维的,可以使gluOrtho2D.他的使用类似于glOrtho.这个函数描述了一个平行修剪空间。这种投影意味着离观察者较远的对象看上去不会变小(与透视投影相反)。在3D笛卡尔坐标中想象这个修剪空间,左边和右边是最小和最大的X值,上边和下边是最小和最大的Y值,近处和远处是最小和最大的Z值。

正射投影:

      正射投影,又叫平行投影。这种投影的视景体是一个矩形的平行管道,也就是一个长方体。正射投影的最大一个特点是无论物体距离相机多远,投影后的物体大小尺寸不变。这种投影通常用在建筑蓝图绘制和计算机辅助设计等方面,这些行业要求投影后的物体尺寸及相互间的角度不变,以便施工或制造时物体比例大小正确。

  glOrtho就是一个正射投影函数。它创建一个平行视景体。实际上这个函数的操作是创建一个正射投影矩阵,并且用这个矩阵乘以当前矩阵。其中近裁剪平面是一个矩形,矩形左下角点三维空间坐标是(left,bottom,-near),右上角点是(right,top,-near);远裁剪平面也是一个矩形,左下角点空间坐标是(left,bottom,-far),右上角点是(right,top,-far)。所有的near和far值同时为正或同时为负。如果没有其他变换,正射投影的方向平行于Z轴,且视点朝向Z负轴。这意味着物体在视点前面时far和near都为负值,物体在视点后面时far和near都为正值。

glOrtho是创建一个正交平行的视景体。 一般用于物体不会因为离屏幕的远近而产生大小的变换的情况。比如,常用的工程中的制图等。需要比较精确的显示。 而作为它的对立情况, glFrustum则产生一个透视投影。这是一种模拟真是生活中,人们视野观测物体的真实情况。例如:观察两条平行的火车到,在过了很远之后,这两条铁轨是会相交于一处的。还有,离眼睛近的物体看起来大一些,远的物体看起来小一些。

glOrtho(left, right, bottom, top, near, far), left表示视景体左面的坐标,right表示右面的坐标,bottom表示下面的,top表示上面的。这个函数简单理解起来,就是一个物体摆在那里,你怎么去截取他。这里,我们先抛开glViewport函数不看。先单独理解glOrtho的功能。 假设有一个球体,半径为1,圆心在(0, 0, 0),那么,我们设定glOrtho(-1.5,
1.5, -1.5, 1.5, -10, 10);就表示用一个宽高都是3的框框把这个球体整个都装了进来。 如果设定glOrtho(0.0, 1.5, -1.5, 1.5, -10, 10);就表示用一个宽是1.5, 高是3的框框把整个球体的右面装进来;如果设定glOrtho(0.0, 1.5, 0.0, 1.5, -10, 10);就表示用一个宽和高都是1.5的框框把球体的右上角装了进来。上述三种情况可以见图:

 

         从上述三种情况,我们可以大致了解glOrtho函数的用法。glOrtho函数只是负责使用什么样的视景体来截取图像,并不负责使用某种规则把图像呈现在屏幕上。

时间: 2024-10-26 15:43:41

OpenGL函数思考-glOrtho的相关文章

OpenGL函数思考-glMatrixMode

OpenGL函数思考-glMatrixMode  函数原型:        void glMatrixMode(GLenum mode) 参数说明:        mode 指定哪一个矩阵堆栈是下一个矩阵操作的目标,可选值: GL_MODELVIEW,对模型视图矩阵堆栈应用随后的矩阵操作.可以在执行此命令后,输出自己的物体图形了. GL_PROJECTION,对投影矩阵堆栈应用随后的矩阵操作.可以在执行此命令后,为我们的场景增加透视. GL_TEXTURE,对纹理矩阵堆栈应用随后的矩阵操作.可以

OpenGL函数思考-glColor

OpenGL函数思考-glColor 函数原型:      glColor3b,glColor3d,glColor3f,glColor3i,glColor3s,glColor3ub,glColor3ui,glColor3us,glColor4b,glColor4d,glColor4f,glColor4i,glColor4s,glColor4ub,glColor4ui,glColor4us,glColor3bv,glColor3dv,glColor3fv,glColor3iv,glColor3sv

OpenGL函数思考-gluLookAt

OpenGL函数思考-gluLookAt 函数原型:       void gluLookAt(GLdouble eyex,GLdouble eyey,GLdouble eyez,GLdouble centerx,GLdouble centery,GLdouble centerz,GLdouble upx,GLdouble upy,GLdouble upz) 参数说明:       eyex, eyey,eyez 指定视点的位置 centerx,centery,centerz 指定参考点的位置

OpenGL函数思考-glClear

OpenGL函数思考-glClear 函数原型:       void glClear(GLbitfield mask); 参数说明:       GLbitfield:可以使用 | 运算符组合不同的缓冲标志位,表明需要清除的缓冲,例如glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT)表示要清除颜色缓冲以及深度缓冲,可以使用以下标志位       GL_COLOR_BUFFER_BIT:    当前可写的颜色缓冲       GL_DEPTH_B

OpenGL函数思考-glBlendFunc

OpenGL函数思考-glBlendFunc 函数原型:      void glBlendFunc(GLenum sfactor,GLenum dfactor)参数说明:       sfactor:源颜色系融合方法,可取如下值GL_ZERO, GL_ONE, GL_DST_COLOR, GL_ONE_MINUS_DST_COLOR, GL_SRC_ALPHA, GL_ONE_MINUS_SRC_COLOR, GL_DST_ALPHA, GL_ONE_MINUS_DST_ALPHA, and

OpenGL函数思考-glLoadIdentity

OpenGL函数思考-glLoadIdentity 函数原型:      void glLoadIdentity(void) 函数说明:       OpenGL为我们提供了一个非常简单的恢复初始坐标系的手段,那就是调用glLoadIdentity()命令.该命令是一个无参的无值函数,其功能是用一个4×4的单位矩阵来替换当前矩阵,实际上就是对当前矩阵进行初始化.也就是说,无论以前进行了多少次矩阵变换,在该命令执行后,当前矩阵均恢复成一个单位矩阵,即相当于没有进行任何矩阵变换状态.       单

OpenGL函数思考-glTexImage2D

OpenGL函数思考-glTexImage2D 函数原型:       void glTexImage2D(GLenum target,GLint level,GLint components,GLsizei width, glsizei height,GLint border,GLenum format,GLenum type, const GLvoid *pixels); 函数说明:       定义一个二维纹理映射.其中       参数target是常数GL_TEXTURE_2D.   

OpenGL函数思考-gluPerspective

OpenGL函数思考-gluPerspective 函数原型:       void gluPerspective(GLdouble fovy, GLdouble aspect,GLdouble zNear,GLdouble zFar) 参数说明:       fovy:    指定视景体的视野的角度,以度数为单位,y轴的上下方向 aspect:指定你的视景体的宽高比(x 平面上) zNear: 指定观察者到视景体的最近的裁剪面的距离(必须为正数) zFar:    指定观察者到视景体的最远的裁

OpenGL函数思考-glRotatef

OpenGL函数思考-glRotatef 函数原型:       void glRotated(GLdouble angle,GLdouble x,GLdouble y,GLdouble z)       void glRotatef(GLfloat angle,GLfloat x,GLfloat y,GLdouble z) 函数说明:      这两个函数用来计算旋转矩阵,该矩阵围绕原点到点(x,y,z)的向量逆时针旋转angle度.