您好,登錄后才能下訂單哦!
說明
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();
}
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。