opengl多视口

opengl多视口

ID:21123662

大小:33.74 KB

页数:4页

时间:2018-10-19

opengl多视口_第1页
opengl多视口_第2页
opengl多视口_第3页
opengl多视口_第4页
资源描述:

《opengl多视口》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、提要OpenGL视口(Viewport)可以看作是窗口中OpenGL的绘制输出区域,可以通过一条简单的glViewport命令设置。一般的OpenGL教程都是单视口,即整个窗口为惟一的一个视口,Nehe的OpenGL教程是我最早见到涉及多视口的。与单视口程序相比,多视口程序的变化主要是:(一)多视口程序不能在窗口resize/reshape时直接调用glViewport,而应该在此时记下窗口大小,然后在绘制场景时多次调用glViewport设置每个视口的位置和大小;(二)对于每个视口,应分别调用glMatrixMode(GL_PROJECTION)和glMatrixMod

2、e(GL_MODELVIEW)以设置投影和建模矩阵。多视口的最常见的应用,就是3DMax中的多视口建模,每一个观察口都从不同的方向去观察模型,从而很方便地去获取模型当前的状态。还有就是赛车游戏中的后视镜等等.具体实现的思路就是对每个视口进行独立的渲染。函数解析下面是需要调用到的一些OpenGL的函数。glLoadIdentity()重置当前指定的矩阵为单位矩阵.glViewport(GLintx,GLinty,GLsizeiwidth,GLsizeiheight)在窗口中定义一个像素矩形,最终将图像映射到这个矩形中。voidgluOrtho2D(GLdoubleleft,

3、GLdoubleright,GLdoublebottom,GLdoubletop)建立了一个可视的二位平面区域。这个和用glOrtho函数的当near=0,far=1时效果是一样。voidgluPerspective(GLdoublefovy,GLdoubleaspect,GLdoublezNear,GLdoublezFar)这个函数指定了观察的视景体(frustum为锥台的意思,通常译为视景体)在世界坐标系中的具体大小,一般而言,其中的参数aspect应该与窗口的宽高比大小相同。voidglScissor(GLintx,GLinty,GLsizeiwidth,GLsiz

4、eiheight)设置一个裁剪窗口,前两个参数为窗口左下角位置,后两个参数是窗口的宽度和高度。使用前一定要glEnable(GL_SCISSOR_TEST);代码实现实现一:voidrenderGL() {   glClear(GL_COLOR_BUFFER_BIT);   glLoadIdentity();                 //重置模型观察矩阵    for(intloop=0;loop<4;loop++)        //循环绘制4个视口   {     if(loop==0)                  //绘制左上角的视口     {   

5、    //设置视口区域       glViewport(0,window_height/2,window_width/2,window_height/2);       glMatrixMode(GL_PROJECTION);       glLoadIdentity();       gluOrtho2D(0,window_width/2,window_height/2,0);     }     if(loop==1)                  //绘制右上角视口     {        glViewport(window_width/2,window_

6、height/2,window_width/2,window_height/2);       glMatrixMode(GL_PROJECTION);       glLoadIdentity();       gluPerspective(45.0,1.0f,0.1f,500.0);     }     if(loop==2)                  //绘制右下角视口     {       glViewport(window_width/2,0,window_width/2,window_height/2);       glMatrixMode(GL_

7、PROJECTION);       glLoadIdentity();       gluPerspective(45.0,1.0f,0.1f,500.0);     }     if(loop==3)                  //绘制左下角视口     {       glViewport(0,0,window_width/2,window_height/2);       glMatrixMode(GL_PROJECTION);       glLoadIdentity();       gluPerspect

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。