1,gluOrtho2D方法
glOrtho2D函数是OpenGL中的二维裁剪函数,以前一直不太懂裁剪是什么意思,这两天在做OpenGL实验的时候发现这个函数的作用。
函数原型为void gluOrtho2D(GLdouble left,GLdouble right,GLdouble bottom,GLdouble top)。
简单的解释下吧。比如说新建一个OpenGL窗口,大小是800*600像素,然后我们调用gluOrtho2D(0,400,0,300),之后在绘制点、线的时候,指定坐标,坐标范围应该为X轴上[0,400],Y轴上[0,300],这样不管是X轴还是Y轴,等于是每一个单位一用两个像素格表示。
窗口的左下角是坐标原点(0,0)。窗口的X轴理论上是800宽度,但裁剪后宽度只有400,通过这个方法可以把某些图形放大。
比如,一条直线,两顶点坐标为(1,1)和(2,2),这样对于800*600的窗口,经过裁剪后,表示的范围也达到400*300,这样这条直线就显的特别短。我们可以改变裁剪函数的参数值,这样定义gluOrtho2D(0,4,0,3),就等于与窗口里面100个像素表示单位1,这样这条直线就显的特别大了。
总之,gluOrtho2D函数等于是定义了比例尺,确定了多少个像素表示坐标系中的单位一。
以上是我对gluOrtho2D函数的粗浅理解,存档。
//------------------------------
2,
11,
opengl中对glOrtho()函数的理解
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的框框把球体的右上角装了进来。上述三种情况可以见图:
12,glViewPort方法
调用glViewPort函数来决定视见区域,告诉OpenGL应把渲染之后的图形绘制在窗体的哪个部位。当视见区域是整个窗体时,OpenGL将把渲染结果绘制到整个窗口。
glViewPort(x:GLInt;y:GLInt;Width:GLSizei;Height:GLSizei);
其中,参数X,Y指定了视见区域的左下角在窗口中的位置,一般情况下为(0,0),Width和Height指定了视见区域的宽度和高度。注意OpenGL使用的窗口坐标和WindowsGDI使用的窗口坐标是不一样的。图1表示了在WindowsGDI中的窗口坐标,而图2则是OpenGL所定义的窗口坐标。
例如,要设置如图3.1-3中的视见区域,我们应该调用函数: glViewPort(100,100,Width,Height);
图1--- 图2 图3
glViewport()函数可以实现拆分窗口的功能,可以用不同的视口多次绘制同一个物体,如,为了创建两个并排的窗口,可以使用下面的这些函数,并辅以适当的模型视图和投影变换:
glViewport(0, 0, sizex/2, sizey);
;
;
;
glViewport(sizex/2, 0,sizex/2, sizey);