麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 學(xué)院 > 開發(fā)設(shè)計(jì) > 正文

OpenGL學(xué)習(xí)筆記4_2(透視相關(guān))

2019-11-10 19:44:55
字體:
供稿:網(wǎng)友

藍(lán)寶書 第四章

正交投影

在ChangeSize函數(shù)中使用glOrtho函數(shù)調(diào)整

glOrtho參考:點(diǎn)擊打開鏈接

正交投影ChangeSize代碼參考

void ChangeSize(GLsizei w, GLsizei h){	GLfloat nRange = 100.0f;	// PRevent a divide by zero  	if (h == 0)		h = 1;	// Set Viewport to window dimensions  	glViewport(0, 0, w, h);	// Reset projection matrix stack  	glMatrixMode(GL_PROJECTION);	glLoadIdentity();	// Establish clipping volume (left, right, bottom, top, near, far)  	if (w <= h)		glOrtho(-nRange, nRange, -nRange*h / w, nRange*h / w, -nRange, nRange);	else		glOrtho(-nRange*w / h, nRange*w / h, -nRange, nRange, -nRange, nRange);	// Reset Model view matrix stack  	glMatrixMode(GL_MODELVIEW);	glLoadIdentity();}

透視投影

在ChangeSize函數(shù)中使用gluPerspective函數(shù)調(diào)整

gluPerspective參考:點(diǎn)擊打開鏈接

透視投影ChangeSize代碼參考

void ChangeSize(GLsizei w, GLsizei h){	GLfloat faspect;	// Prevent a divide by zero	if (h == 0)		h = 1;	// Set viewport to window dimensions	glViewport(0, 0, w, h);	fAspect = (GLfloat)w / (GLfloat)h;	// Reset coordinate system	glMatrixMode(GL_PROJECTION);	glLoadIdentity();	// Produce the perspective projection	gluPerspective(60.0f, fAspect, 1.0, 400.0);	glMatrixMode(GL_MODELVIEW);	glLoadIdentity();}glOrtho函數(shù)和gluPerspective的作用是在整個(gè)世界中勾出一個(gè)視線可以達(dá)到的范圍

例4.3 太陽地球月亮模型

光源參考:點(diǎn)擊打開鏈接

#include <windows.h>  #include <math.h>  #include <GL/GL.h>  #include <GL/GLU.h>  #include <GL/glut.h>   void RenderScene(void){	static float fMoonRot = 0.0f;	static float fEarthRot = 0.0f;		glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);	glMatrixMode(GL_MODELVIEW);	glPushMatrix();	glTranslatef(0.0f, 0.0f, -300.0f);	//sun	glColor3ub(255, 255, 0);	glDisable(GL_LIGHTING);	glutSolidSphere(15.0f, 15, 15);	glEnable(GL_LIGHTING);	GLfloat lightPos[] = { 0.0f, 0.0f, 0.0f, 1.0f};	glLightfv(GL_LIGHT0, GL_POSITION, lightPos);	glRotatef(fEarthRot, 0.0f, 1.0f, 0.0f);	glColor3ub(0, 0, 255);	glTranslatef(105.0f, 0.0f, 0.0f);	glutSolidSphere(15.0f, 15, 15);	glColor3ub(200, 200, 200);	glRotatef(fMoonRot, 0.0f, 1.0f, 0.0f);	glTranslatef(30.0f, 0.0f, 0.0f);	fMoonRot += 15.0f;	if (fMoonRot > 360.0f)		fMoonRot = 0.0f;	glutSolidSphere(6.0f, 15, 15);	glPopMatrix(); // Modelview matrix	fEarthRot += 5.0f;	if (fEarthRot > 360.0f)		fEarthRot = 0.0f;	// Show the image	glutSwapBuffers();}void SetupRC(){	glEnable(GL_DEPTH_TEST);	glFrontFace(GL_CCW);	glEnable(GL_CULL_FACE);	glEnable(GL_LIGHTING);	glEnable(GL_LIGHT0);	glEnable(GL_COLOR_MATERIAL);	// Black background	glClearColor(0.0f, 0.0f, 0.0f, 1.0f);}void timerProc(int id){	RenderScene();	glutTimerFunc(100, timerProc, 1);}void ChangeSize(GLsizei w, GLsizei h){	GLfloat fAspect;	// Prevent a divide by zero	if (h == 0)		h = 1;	// Set viewport to window dimensions	glViewport(0, 0, w, h);	fAspect = (GLfloat)w / (GLfloat)h;	// Reset coordinate system	glMatrixMode(GL_PROJECTION);	glLoadIdentity();	// Produce the perspective projection	gluPerspective(45.0f, fAspect, 1.0, 425.0);	glMatrixMode(GL_MODELVIEW);	glLoadIdentity();}int main(int argc, char* argv[]){	glutInit(&argc, argv);	glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGBA);	glutInitWindowSize(800, 600);	glutCreateWindow("Earth & Moon & Sun System");	glutDisplayFunc(RenderScene);//顯示回調(diào)函數(shù)  	glutReshapeFunc(ChangeSize);//窗口大小變形回調(diào)函數(shù)  	glutTimerFunc(100, timerProc, 1);	SetupRC();	glutMainLoop();	return 0;}


發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 91精品一区二区综合在线 | 一区二区精品视频 | 国产精品成人一区二区三区电影毛片 | 久久色网站 | 免费国产在线精品 | 午夜在线视频一区二区三区 | 娇喘视频在线观看 | 精品国产91一区二区三区 | 久久综合综合久久 | 斗破苍穹在线免费 | 日韩精品99久久久久久 | 欧美日韩亚洲成人 | 久久精品亚洲精品国产欧美kt∨ | 羞羞电影网 | 久久福利小视频 | 草b视频在线观看 | 亚洲最新无码中文字幕久久 | 91看片欧美| 92看片淫黄大片欧美看国产片 | av中文字幕免费在线观看 | 久久人人爽人人爽人人片av高清 | 4p嗯啊巨肉寝室调教男男视频 | www.mitao| 免费放黄网站在线播放 | 羞羞视频免费观看网站 | 亚州综合网 | 国产精品视频导航 | 国产免费观看电影网站 | 九九热精品在线 | 国产成年人网站 | 18被视频免费观看视频 | chengrenyingshi| 午夜爽爽爽男女免费观看hd | 91成人免费网站 | 免费看日产一区二区三区 | 亚洲日本韩国精品 | 日韩 欧美 中文 | 成人免费一区二区三区视频网站 | 九九视屏 | 激情久久一区二区 | 在线一级片 |