glViewport 用例

发布时间:2020-10-21 13:30:55 作者:fengyuzaitu
来源:网络 阅读:615

说明

    glViewport决定了将OpengGL渲染的图形,显示在屏幕的什么位置,第一和第二参数决定开始渲染的位置,后两个参数分别为宽和高


代码

#include <gl/glut.h>


void display()

{

  glClear( GL_COLOR_BUFFER_BIT );

  glColor3f( 1.0, 0.0, 0.0 );

  //画分割线,分成四个视见区

  glViewport( 0, 0, 400, 400 );

  glBegin( GL_LINES );

  glVertex2f( -1.0, 0 );

  glVertex2f( 1.0, 0 );

  glVertex2f( 0.0, -1.0 );

  glVertex2f( 0.0, 1.0 );

  glEnd();


  //定义在左下角的区域

  glColor3f( 0.0, 1.0, 0.0 );

  glViewport( 0, 0, 200, 200 );

  glBegin( GL_POLYGON );

  glVertex2f( -0.5, -0.5 );

  glVertex2f( -0.5, 0.5 );

  glVertex2f( 0.5, 0.5 );

  glVertex2f( 0.5, -0.5 );

  glEnd();



  //定义在右上角的区域

  glColor3f( 0.0, 0.0, 1.0 );

  glViewport( 200, 200, 200, 200 );//注意,后面这两个参数是高度和宽度,而不是坐标

  glBegin( GL_POLYGON );

  glVertex2f( -0.5, -0.5 );

  glVertex2f( -0.5, 0.5 );

  glVertex2f( 0.5, 0.5 );

  glVertex2f( 0.5, -0.5 );

  glEnd();


  //定义在左上角的区域

  glColor3f( 1.0, 0.0, 0.0 );

  glViewport( 0, 200, 200, 200 );//注意,后面这两个参数是高度和宽度,而不是坐标

  glBegin( GL_POLYGON );

  glVertex2f( -0.5, -0.5 );

  glVertex2f( -0.5, 0.5 );

  glVertex2f( 0.5, 0.5 );

  glVertex2f( 0.5, -0.5 );

  glEnd();


  //定义在右下角

  glColor3f( 1.0, 1.0, 1.0 );

  glViewport( 200, 0, 200, 200 );//注意,后面这两个参数是高度和宽度,而不是坐标

  glBegin( GL_POLYGON );

  glVertex2f( -0.5, -0.5 );

  glVertex2f( -0.5, 0.5 );

  glVertex2f( 0.5, 0.5 );

  glVertex2f( 0.5, -0.5 );

  glEnd();

  glFlush();

}


void init()

{

  glClearColor( 0.0, 0.0, 0.0, 0.0 );

  glColor3f( 1.0, 1.0, 1.0 );


  glMatrixMode( GL_PROJECTION );

  glLoadIdentity();

  //定义剪裁面

  //gluOrtho2D( -1.0, 1.0, -1.0, 1.0 );

}


int main( int argc, char ** argv )

{

  glutInit( &argc, argv );

  glutInitDisplayMode( GLUT_SINGLE | GLUT_RGB );

  glutInitWindowPosition( 100, 100 );

  glutInitWindowSize( 400, 400 );

  glutCreateWindow( "glViewport" );

  glutDisplayFunc( display );

  init();

  glutMainLoop();

}


推荐阅读:
  1. Python并行遍历zip和遍历可迭代对象map、filter函数
  2. 新手学Python可行吗?需要什么基础吗?

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

glv iewport

上一篇:linux systemctl命令详解

下一篇:oracle动态注册和静态注册监听器

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》