openGL學習筆記3

三、視口變換


相關函數

glLoadIdentity();
將當前的用戶座標系的原點移到了屏幕中心:類似於一個復位操作。

void gluLookAt(GLdouble eyex,GLdouble eyey,GLdouble eyez,GLdouble centerx,GLdouble centery,GLdouble centerz,GLdouble upx,GLdouble upy,GLdouble upz)
視點轉換

glScalef(x,y,z)
對模型進行xyz方向上的壓縮拉伸 

glViewport(0,0,GLsizei(w),GLsizei(h))
以左下角爲原點選擇繪圖區域

glMatrixMode(GL_PROJECTION)
設置當前操作的矩陣 GL_PROJECTION爲投影矩陣  GL_MODELVIEW 模型視圖矩陣 


#include<Windows.h>
#include<gl\glut.h>
#pragma comment(linker, "/subsystem:\"windows\" /entry:\"mainCRTStartup\"")

void init(void)
{
	glClearColor(0.0,0.0,0.0,0.0);
	glShadeModel(GL_FLAT);
}

void disply()
{

	glClear(GL_COLOR_BUFFER_BIT);
	glColor3f(1.0,1.0,1.0);
	glLoadIdentity();//座標系復位
	gluLookAt(0.0,0.0,5.0,0.0,0.0,0.0,0.0,1.0,0.0);//視點轉換 
	glScalef(1.0,1.0,1.0);//模型在Y方向拉伸爲原來的2倍
	glutWireCube(1.0);//繪製邊長爲1的線框立方體
	glFlush();
}

void reshape(int w,int h)
{
	glViewport(0,0,GLsizei(w),GLsizei(h));//以左下角爲原點選擇繪圖區域
	glMatrixMode(GL_PROJECTION);//指定當前操作矩陣爲投影矩陣
	glLoadIdentity();
	//glFrustum(-1.0,1.0,-1.0,1.0,1.5,20.0);//把當前矩陣轉變成透視矩陣
	//gluPerspective(30,1.0,1.5,50);
	glOrtho(-1.0,1.0,-1.0,1.0,1.5,20);
	glMatrixMode(GL_MODELVIEW);//對模型視圖矩陣進行操作
	 
}


int main(int argc, char** argv)
{
 glutInit(&argc,argv);
 glutInitDisplayMode(GLUT_SINGLE|GLUT_RGB);//指定顯示模式
 glutInitWindowSize(500,500);//指定窗口大小
 glutInitWindowPosition(100,100);//指定窗口左上角位置
 glutCreateWindow("OpenGL");//創建窗口標題爲OpenGL的窗口
 init();
 glutDisplayFunc(disply); 
 glutReshapeFunc(reshape);
 glutMainLoop();
 return 0;
}







發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章