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

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

openGL 學(xué)習(xí)筆記 2

2019-11-11 05:09:56
字體:
供稿:網(wǎng)友

藍(lán)寶書 第二章

1 windows平臺(tái)使用頭文件(根據(jù)環(huán)境不同會(huì)有變化)

#include<windows.h>#include<gl/gl.h>#include<gl/glu.h> 

2 openGL變量類型與C語言變量類型對(duì)應(yīng)表

表2.1 第81頁

3 API函數(shù)命名規(guī)則

庫前綴+根命令+參數(shù)數(shù)量+參數(shù)類型

glColor3f(……)

4 常見RGB復(fù)合顏色表

表2.2 89頁

5 單緩沖和雙緩沖

glutInitDisplayMode(GLUT_SIMPLE)     ->使用glFlush()

glutInitDisplayMode(GLUT_DOUBLE)   ->使用glutSwapBuffers()

6 OpenGL狀態(tài)機(jī)

使用void glEnable(GLenum capability) 啟用某一功能/狀態(tài)

使用void glDisable(GLenum capability) 禁用某一功能/狀態(tài)

使用Glboolean glIsEnabled(GLenum capability) 查詢某一功能/狀態(tài)是否啟用

使用下列函數(shù)獲得功能/狀態(tài)的參數(shù)

void glGetBooleanv(GLenumpname, GLboolean *params);void glGetDoublev(GLenum pname, GLdouble *params);void glGetFloatv(GLenum pname, GLfloat *params);void glGetIntegerv(GLenum pname, GLint *params); 

7 保存和恢復(fù)狀態(tài)保存狀態(tài) void glPushAttrib(GLbitfield mask)

恢復(fù)狀態(tài) void glPopAttrib(GLbitfield mask)

例如:glPushAtrrib(GL_TEXTURE_BIT|GL_LIGHTING_BIT)

8 錯(cuò)誤信息

返回錯(cuò)誤 Glenum glGetError(void)

返回錯(cuò)誤詳細(xì)信息 const GLubyte* gluErrorString(GLenum errorCode)

表2.3 錯(cuò)誤信息列舉   105頁

9 獲取字符串

const GLubyte *glGetString(GLenum name)

const char* version = (const char*)glGetString(GL_VERSION); 獲取版本號(hào)

glGetString(GL_VENDOR); 返回OpenGL的提供廠商。

glGetString(GL_RENDERER); 返回執(zhí)行OpenGL渲染的設(shè)備,通常就是顯卡的名字。

glGetString(GL_EXTENSIONS); 返回所支持的所有擴(kuò)展,每?jī)蓚€(gè)擴(kuò)展之間用空格隔開。

10 控制行為

void glHint(GLenum target, GLenum mode)

參考http://blog.csdn.net/shuaihj/article/details/7230867

11 OpenGL擴(kuò)展(對(duì)其他設(shè)備/平臺(tái)的支持)

略……

代碼:

例2.1

#include <Windows.h>#include <GL/GL.h>#include <GL/GLU.h>#include <GL/glut.h>void RenderScene(void){	// Clear the window with current clearing color	glClear(GL_COLOR_BUFFER_BIT);//清除緩沖 GL_COLOR_BUFFER_BIT: 當(dāng)前可寫的顏色緩沖	// Flush drawing commands	glFlush();}///////////////////////////////////////////////////////////// Set up the rendering statevoid SetuPRC(void){	glClearColor(0.0f, 0.0f, 1.0f, 1.0f);}///////////////////////////////////////////////////////////// Main program entry pointint main(int argc, char* argv[]){	glutInit(&argc, argv);	glutInitDisplayMode(GLUT_SINGLE | GLUT_RGBA);//設(shè)置模式 單緩沖 RGB模式	glutCreateWindow("Simple");//創(chuàng)建窗口	glutDisplayFunc(RenderScene);//設(shè)置回調(diào)函數(shù) 循環(huán)調(diào)用	SetupRC();//初始化openGL	glutMainLoop();//啟動(dòng)程序 --無返回 	return 0;}例2.2
#include <Windows.h>#include <GL/GL.h>#include <GL/GLU.h>#include <GL/glut.h>void RenderScene(void){	glClear(GL_COLOR_BUFFER_BIT);	glColor3f(1.0f, 0.0f, 0.0f);	glRectf(-50.0f, 50.0f, 50.0f, -50.0f);//設(shè)置矩形	glFlush();}void SetupRC(){	glClearColor(0.0f, 0.0f, 1.0f, 0.5f);}void ChangeSize(GLsizei w, GLsizei h)//窗口大小改變函數(shù)---2D{	GLfloat aspectRatio;	if (h == 0)		h = 1;	glViewport(0, 0, w, h);//設(shè)置新窗口大小	glMatrixMode(GL_PROJECTION);	glLoadIdentity();	aspectRatio = (GLfloat)w / (GLfloat)h;	if (w <= h)		glOrtho(-100.0, 100.0, -100 / aspectRatio, 100.0 / aspectRatio, 1.0, -1.0);	else		glOrtho(-100.0*aspectRatio, 100.0*aspectRatio, -100.0, 100.0, 1.0, -1.0);	glMatrixMode(GL_MODELVIEW);	glLoadIdentity();}int main(int argc,char* argv[]){	glutInit(&argc, argv);	glutInitDisplayMode(GLUT_SINGLE | GLUT_RGBA);	glutCreateWindow("GLRect");	glutDisplayFunc(RenderScene);//顯示回調(diào)函數(shù)	glutReshapeFunc(ChangeSize);//窗口大小變形回調(diào)函數(shù)	SetupRC();	glutMainLoop();	return 0;}

例2.3 跳動(dòng)方塊

#include <Windows.h>#include <GL/GL.h>#include <GL/GLU.h>#include <GL/glut.h>//初始化方塊位置和大小GLfloat x1 = 0.0f;GLfloat y1 = 0.0f;GLfloat rsize = 25;//每一步x y移動(dòng)的方向GLfloat xstep = 5.0f;GLfloat ystep = 5.0f;GLfloat windowWidth;GLfloat windowHight;void RenderScene(void){	glClear(GL_COLOR_BUFFER_BIT);	glColor3f(1.0f, 0.0f, 0.0f);	glRectf(x1, y1, x1 + rsize, y1 - rsize);	glutSwapBuffers();	//glFlush();}void TimerFunction(int value){	if (x1 > windowWidth - rsize || x1 < -windowWidth)		xstep = -xstep;	if (y1>windowHight || y1 < -windowHight + rsize)		ystep = -ystep;	x1 += xstep;	y1 += ystep;	if (x1>(windowWidth - rsize + xstep))		x1 = windowWidth - rsize - 1;	else if (x1 < -(windowWidth + xstep))		x1 = -windowWidth - 1;	if (y1>(windowHight + ystep))		y1 = windowHight - 1;	else if (y1 < -(windowHight - rsize + ystep))		y1 = -windowHight + rsize - 1;	glutPostRedisplay();//當(dāng)前窗口需要重新繪制	glutTimerFunc(100, TimerFunction, 1);//確保函數(shù)循環(huán)調(diào)用}void SetupRC(){	glClearColor(0.0f, 0.0f, 1.0f, 0.5f);}void ChangeSize(GLsizei w, GLsizei h){	GLfloat aspectRatio;	if (h == 0)		h = 1;	glViewport(0, 0, w, h);//設(shè)置新窗口大小	glMatrixMode(GL_PROJECTION);	glLoadIdentity();	aspectRatio = (GLfloat)w / (GLfloat)h;	if (w <= h)		glOrtho(-100.0, 100.0, -100 / aspectRatio, 100.0 / aspectRatio, 1.0, -1.0);	else		glOrtho(-100.0*aspectRatio, 100.0*aspectRatio, -100.0, 100.0, 1.0, -1.0);	glMatrixMode(GL_MODELVIEW);	glLoadIdentity();}int main(int argc, char* argv[]){	glutInit(&argc, argv);	glutInitDisplayMode(GLUT_SINGLE | GLUT_RGBA);	glutInitWindowSize(800, 600);	glutCreateWindow("Bounce");	glutDisplayFunc(RenderScene);//顯示回調(diào)函數(shù)	glutReshapeFunc(ChangeSize);//窗口大小變形回調(diào)函數(shù)	glutTimerFunc(33, TimerFunction, 1);//定時(shí)調(diào)用函數(shù) 時(shí)間 函數(shù) 區(qū)別值	SetupRC();	glutMainLoop();	return 0;}


發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: chinesexxxx刘婷hd| 黑人操穴 | 操操插插| 香蕉国产在线视频 | 免费观看欧美一级片 | 欧美色另类 | 九九热色 | 久草在线最新 | 国产欧美一区二区三区免费看 | 日本视频免费看 | gogo全球大胆高清人露出91 | 精国产品一区二区三区 | 91精品国产日韩91久久久久久360 | 成人在线视频黄色 | 亚洲国产高清自拍 | 777午夜精品视频在线播放 | 男人的天堂色偷偷 | 一级啪啪片 | 国产午夜电影在线观看 | 日韩精品久久久久久久九岛 | 久久99精品国产 | 欧美三级日本三级少妇99 | 在线免费视频a | h视频免费在线观看 | 日韩黄色三级视频 | 黄色a级片免费观看 | 一级一级一级毛片 | a集毛片 | 91九色网 | 日韩黄色影视 | 天天操天天骑 | 久久午夜免费视频 | 中文字幕在线观看91 | 久久久久久中文字幕 | 最新在线黄色网址 | 黄色网址免费在线播放 | 免费看污视频在线观看 | 国产69精品99久久久久久宅男 | 久久91亚洲人成电影网站 | 爱射av| 欧美精品成人一区二区在线观看 |