亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

openGL 學習筆記 2

2019-11-11 05:44:57
字體:
來源:轉載
供稿:網友

藍寶書 第二章

1 windows平臺使用頭文件(根據環境不同會有變化)

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

2 openGL變量類型與C語言變量類型對應表

表2.1 第81頁

3 API函數命名規則

庫前綴+根命令+參數數量+參數類型

glColor3f(……)

4 常見RGB復合顏色表

表2.2 89頁

5 單緩沖和雙緩沖

glutInitDisplayMode(GLUT_SIMPLE)     ->使用glFlush()

glutInitDisplayMode(GLUT_DOUBLE)   ->使用glutSwapBuffers()

6 OpenGL狀態機

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

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

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

使用下列函數獲得功能/狀態的參數

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

7 保存和恢復狀態保存狀態 void glPushAttrib(GLbitfield mask)

恢復狀態 void glPopAttrib(GLbitfield mask)

例如:glPushAtrrib(GL_TEXTURE_BIT|GL_LIGHTING_BIT)

8 錯誤信息

返回錯誤 Glenum glGetError(void)

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

表2.3 錯誤信息列舉   105頁

9 獲取字符串

const GLubyte *glGetString(GLenum name)

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

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

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

glGetString(GL_EXTENSIONS); 返回所支持的所有擴展,每兩個擴展之間用空格隔開。

10 控制行為

void glHint(GLenum target, GLenum mode)

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

11 OpenGL擴展(對其他設備/平臺的支持)

略……

代碼:

例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: 當前可寫的顏色緩沖	// 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);//設置模式 單緩沖 RGB模式	glutCreateWindow("Simple");//創建窗口	glutDisplayFunc(RenderScene);//設置回調函數 循環調用	SetupRC();//初始化openGL	glutMainLoop();//啟動程序 --無返回 	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);//設置矩形	glFlush();}void SetupRC(){	glClearColor(0.0f, 0.0f, 1.0f, 0.5f);}void ChangeSize(GLsizei w, GLsizei h)//窗口大小改變函數---2D{	GLfloat aspectRatio;	if (h == 0)		h = 1;	glViewport(0, 0, w, h);//設置新窗口大小	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);//顯示回調函數	glutReshapeFunc(ChangeSize);//窗口大小變形回調函數	SetupRC();	glutMainLoop();	return 0;}

例2.3 跳動方塊

#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移動的方向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();//當前窗口需要重新繪制	glutTimerFunc(100, TimerFunction, 1);//確保函數循環調用}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);//設置新窗口大小	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);//顯示回調函數	glutReshapeFunc(ChangeSize);//窗口大小變形回調函數	glutTimerFunc(33, TimerFunction, 1);//定時調用函數 時間 函數 區別值	SetupRC();	glutMainLoop();	return 0;}


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
中文字幕自拍vr一区二区三区| 伊人一区二区三区久久精品| 亚洲色图色老头| 一本一本久久a久久精品综合小说| 欧美性开放视频| 久久久免费电影| 欧美综合在线观看| 亚洲国产精品久久91精品| 亚洲成人精品视频| 精品呦交小u女在线| 激情av一区二区| 久久国内精品一国内精品| 97在线视频观看| 91夜夜揉人人捏人人添红杏| 亚洲a成v人在线观看| 久久成年人免费电影| 成人精品一区二区三区电影黑人| 国产91精品在线播放| 亲爱的老师9免费观看全集电视剧| 亚洲第一区第一页| 国产精品视频成人| 在线观看精品国产视频| 国产精品海角社区在线观看| 日本在线观看天堂男亚洲| 91久久夜色精品国产网站| 精品av在线播放| 8090理伦午夜在线电影| 欧美xxxx做受欧美.88| 97色在线观看免费视频| 国产精品va在线播放我和闺蜜| 国产精品高清在线| 这里只有精品在线播放| 亚洲国产小视频| 国产精品久久二区| 亚洲国产福利在线| 欧美黑人一区二区三区| 色妞色视频一区二区三区四区| 亚洲精品国精品久久99热| 国产日韩欧美中文| 欧美国产日韩一区二区在线观看| 韩国精品久久久999| 91精品免费久久久久久久久| 国产一区二区三区在线观看视频| xxav国产精品美女主播| 日韩视频免费看| 欧美成人合集magnet| 欧美精品videos性欧美| 欧美一级大片在线观看| 亚洲精品suv精品一区二区| 亚洲激情小视频| 91亚洲国产精品| 国产精品视频99| 亚洲精品久久久久| 欧美日韩国产精品一区二区三区四区| 亚洲一区二区三区sesese| 最近2019年手机中文字幕| 久久99国产精品自在自在app| 国产一区二区丝袜高跟鞋图片| 亚洲激情视频在线观看| 亚洲天堂av在线免费观看| 亚洲综合日韩中文字幕v在线| 日韩欧美成人精品| 久久国产精品久久久久久久久久| 久久久国产精品视频| 日韩电影大全免费观看2023年上| 欧美成人免费全部| 91免费人成网站在线观看18| 午夜剧场成人观在线视频免费观看| 欧洲精品毛片网站| 九色91av视频| 日韩中文字幕免费视频| 久久精品国产69国产精品亚洲| 精品露脸国产偷人在视频| 亚洲天堂av电影| 日韩精品视频在线| 欧美电影第一页| 日韩在线播放一区| 国产一区二区三区日韩欧美| 日韩中文字幕视频在线| 亚洲黄色片网站| 国产成人小视频在线观看| 成人久久18免费网站图片| 宅男66日本亚洲欧美视频| 欧美在线中文字幕| 国模极品一区二区三区| 日韩成人在线观看| 亚洲wwwav| 超碰日本道色综合久久综合| 91丝袜美腿美女视频网站| 性亚洲最疯狂xxxx高清| 黄网站色欧美视频| 欧美日韩亚洲成人| 欧美亚洲视频一区二区| 91在线|亚洲| 欧美激情在线有限公司| 日本久久亚洲电影| 色综合老司机第九色激情| 国产精品偷伦免费视频观看的| 神马国产精品影院av| 亚洲区免费影片| 中文亚洲视频在线| 欧美成人中文字幕| 日韩av电影在线网| 亚洲欧洲高清在线| 国产亚洲精品美女久久久久| 日韩电影中文 亚洲精品乱码| 欧美伊久线香蕉线新在线| 色诱女教师一区二区三区| 久久久久久香蕉网| 午夜欧美大片免费观看| 日本久久久久久久| 欧美一区二区三区艳史| 欧美黑人性生活视频| 国产91精品久久久久久| 久久夜精品va视频免费观看| 成人h视频在线| 亚洲在线www| 国产一区二区在线免费| 一区二区欧美激情| 久久夜精品香蕉| 一区二区三区回区在观看免费视频| 午夜剧场成人观在线视频免费观看| 国产91精品视频在线观看| 一区二区三区四区视频| 狠狠色狠色综合曰曰| 久久综合国产精品台湾中文娱乐网| 中文字幕亚洲无线码在线一区| 成人性教育视频在线观看| 欧美日韩在线第一页| 欧美成人精品三级在线观看| 国产精品亚发布| 亚洲自拍在线观看| 亚洲精品久久久久中文字幕二区| 欧美激情精品久久久久久大尺度| 亚洲视频视频在线| 在线观看久久久久久| 色偷偷噜噜噜亚洲男人的天堂| 91国产美女在线观看| 国内自拍欧美激情| 亚洲激情 国产| 日韩欧美aⅴ综合网站发布| 日韩电影大片中文字幕| 国产日韩欧美中文| 成人福利在线视频| 色综合天天狠天天透天天伊人| 亚洲国产天堂久久国产91| 欧美有码在线视频| 91成人免费观看网站| 91在线无精精品一区二区| 亚洲国产中文字幕在线观看| 色中色综合影院手机版在线观看| 成人国内精品久久久久一区| 91成人在线播放| 国产91|九色| 欧美乱人伦中文字幕在线| 日韩在线精品视频| 国产精品com| 欧美激情三级免费| 亚洲视屏在线播放| 国产精品第1页| 九九精品在线视频| 久久频这里精品99香蕉| 久久国产精品久久国产精品| 国产精品美女久久|