OpenGL的glViewPort窗口设置函数实现分屏

OpenGL的glViewPort窗口设置函数实现分屏

之前实现过全景图片查看(OpenGL的几何变换3之内观察全景图),那么我们需要进行分屏该如何实现呢?如下图:

 

没错就是以前提过的glViewPort函数,废话不多说了,我直接上代码:

复制代码

 1 //从这里开始进行所有的绘制
 2 void drawCube(void)
 3 {
 4     glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);    //清除屏幕和深度缓存
 5     glMatrixMode(GL_MODELVIEW);
 6     glLoadIdentity();    //重置当前的模型观察矩阵
 7 
 8     glPushMatrix();
 9     {
10         gluLookAt(0, 0, -5, 0, 0, 0, 0, 1, 0);
11         glTranslatef(0.0f, 0.0f, -5.0f);    //移入屏幕 5 个单位
12         glRotatef(xangle_Textures, 1.0f, 0.0f, 0.0f);    //绕X轴旋转
13         glRotatef(yangle_Textures, 0.0f, 1.0f, 0.0f);    //绕Y轴旋转
14         glRotatef(zangle_Textures, 0.0f, 0.0f, 1.0f);    //绕Z轴旋转
15         for (int i = 0; i < 2; i++) {
16             glViewport(i * w_Textures, 0, w_Textures, h_Textures);
17             glBindTexture(GL_TEXTURE_2D, texturesArr[0]);    //选择纹理
18             glBegin(GL_QUADS); {
19                 //前面:纹理顺时针,立方体逆时针
20                 glTexCoord2f(0.0f, 0.0f); glVertex3f( 1.0f, -1.0f,  1.0f);    //纹理和四边形的左下
21                 glTexCoord2f(0.0f, 1.0f); glVertex3f( 1.0f,  1.0f,  1.0f);    //纹理和四边形的左上
22                 glTexCoord2f(1.0f, 1.0f); glVertex3f(-1.0f,  1.0f,  1.0f);    //纹理和四边形的右上
23                 glTexCoord2f(1.0f, 0.0f); glVertex3f(-1.0f, -1.0f,  1.0f);    //纹理和四边形的右下
24             }glEnd();
25     
26             glBindTexture(GL_TEXTURE_2D, texturesArr[1]);    //选择纹理
27             glBegin(GL_QUADS); {
28                 //后面:纹理顺时针,立方体逆时针
29                 glTexCoord2f(0.0f, 0.0f); glVertex3f(-1.0f, -1.0f, -1.0f);    //纹理和四边形的左下
30                 glTexCoord2f(0.0f, 1.0f); glVertex3f(-1.0f,  1.0f, -1.0f);    //纹理和四边形的左上
31                 glTexCoord2f(1.0f, 1.0f); glVertex3f( 1.0f,  1.0f, -1.0f);    //纹理和四边形的右上
32                 glTexCoord2f(1.0f, 0.0f); glVertex3f( 1.0f, -1.0f, -1.0f);    //纹理和四边形的右下
33             }glEnd();
34     
35             glBindTexture(GL_TEXTURE_2D, texturesArr[2]);    //选择纹理
36             glBegin(GL_QUADS); {
37                 //顶面:纹理顺时针,立方体逆时针
38                 glTexCoord2f(0.0f, 0.0f); glVertex3f( 1.0f,  1.0f,  1.0f);    //纹理和四边形的左下
39                 glTexCoord2f(0.0f, 1.0f); glVertex3f( 1.0f,  1.0f, -1.0f);    //纹理和四边形的左上
40                 glTexCoord2f(1.0f, 1.0f); glVertex3f(-1.0f,  1.0f, -1.0f);    //纹理和四边形的右上
41                 glTexCoord2f(1.0f, 0.0f); glVertex3f(-1.0f,  1.0f,  1.0f);    //纹理和四边形的右下
42             }glEnd();
43     
44             glBindTexture(GL_TEXTURE_2D, texturesArr[3]);    //选择纹理
45             glBegin(GL_QUADS); {
46                 //底面:纹理顺时针,立方体逆时针
47                 glTexCoord2f(0.0f, 0.0f); glVertex3f( 1.0f, -1.0f, -1.0f);    //纹理和四边形的左下
48                 glTexCoord2f(0.0f, 1.0f); glVertex3f( 1.0f, -1.0f,  1.0f);    //纹理和四边形的左上
49                 glTexCoord2f(1.0f, 1.0f); glVertex3f(-1.0f, -1.0f,  1.0f);    //纹理和四边形的右上
50                 glTexCoord2f(1.0f, 0.0f); glVertex3f(-1.0f, -1.0f, -1.0f);    //纹理和四边形的右下
51             }glEnd();
52     
53             glBindTexture(GL_TEXTURE_2D, texturesArr[5]);    //选择纹理
54             glBegin(GL_QUADS); {
55                 //右面:纹理顺时针,立方体逆时针
56                 glTexCoord2f(0.0f, 0.0f); glVertex3f( 1.0f, -1.0f, -1.0f);    //纹理和四边形的左下
57                 glTexCoord2f(0.0f, 1.0f); glVertex3f( 1.0f,  1.0f, -1.0f);    //纹理和四边形的左上
58                 glTexCoord2f(1.0f, 1.0f); glVertex3f( 1.0f,  1.0f,  1.0f);    //纹理和四边形的右上
59                 glTexCoord2f(1.0f, 0.0f); glVertex3f( 1.0f, -1.0f,  1.0f);    //纹理和四边形的右下
60             }glEnd();
61     
62             glBindTexture(GL_TEXTURE_2D, texturesArr[4]);    //选择纹理
63             glBegin(GL_QUADS); {
64                 //左面:纹理顺时针,立方体逆时针
65 
66                 glTexCoord2f(0.0f, 0.0f); glVertex3f(-1.0f, -1.0f,  1.0f);    //纹理和四边形的左下
67                 glTexCoord2f(0.0f, 1.0f); glVertex3f(-1.0f,  1.0f,  1.0f);    //纹理和四边形的左上
68                 glTexCoord2f(1.0f, 1.0f); glVertex3f(-1.0f,  1.0f, -1.0f);    //纹理和四边形的右上
69                 glTexCoord2f(1.0f, 0.0f); glVertex3f(-1.0f, -1.0f, -1.0f);    //纹理和四边形的右下
70             }glEnd();
71         }
72     }glPopMatrix();
73     glFlush();
74 }
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值