天天看點

glViewport 用例

說明

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

  //定義在右上角的區域

  glColor3f( 0.0, 0.0, 1.0 );

  glViewport( 200, 200, 200, 200 );//注意,後面這兩個參數是高度和寬度,而不是坐标

  //定義在左上角的區域

  glViewport( 0, 200, 200, 200 );//注意,後面這兩個參數是高度和寬度,而不是坐标

  //定義在右下角

  glColor3f( 1.0, 1.0, 1.0 );

  glViewport( 200, 0, 200, 200 );//注意,後面這兩個參數是高度和寬度,而不是坐标

  glFlush();

}

void init()

  glClearColor( 0.0, 0.0, 0.0, 0.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();

    本文轉自fengyuzaitu 51CTO部落格,原文連結:http://blog.51cto.com/fengyuzaitu/1881876,如需轉載請自行聯系原作者

繼續閱讀