OpenGL的學習之二(glViewport)


  glViewport是OpenGL中的一個函數。計算機圖形學中,在屏幕上打開窗口的任務是由窗口系統,而不是OpenGL負責的。glViewport在默認情況下,視口被設置為占據打開窗口的整個像素矩形,窗口大小和設置視口大小相同,所以為了選擇一個更小的繪圖區域,就可以用glViewport函數來實現這一變換,在窗口中定義一個像素矩形,最終將圖像映射到這個矩形中。例如可以對窗口區域進行划分,在同一個窗口中顯示分割屏幕的效果,以顯示多個視圖/

  glViewport(GLint x,GLint y,GLsizei width,GLsizei height)為其函數原型。
X,Y————以像素為單位,指定了 視口的左下角(在第一象限內,以(0,0)為原點的)位置。
width,height————表示這個視口矩形的寬度和高度,根據窗口的實時變化重繪窗口。
// OpenGL_03.cpp : 定義控制台應用程序的入口點。
//

#include "stdafx.h"
#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, -1.0);
	glVertex2f(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();
}



int main(int argc, char *argv[])
{
	glutInit(&argc, argv);
	glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB);
	glutInitWindowPosition(100, 100);
	glutInitWindowSize(400, 400);
	glutCreateWindow("glViewport");
	glutDisplayFunc(display);
	//0100;
	glutMainLoop();
	return 0;
}

  

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM