openGL学习

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);




  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值