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

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

OpenGL 學習筆記3_4(繪制多邊形相關)

2019-11-11 03:57:19
字體:
來源:轉載
供稿:網友

藍寶書 第三章

畫多邊形

構造原則:1 多邊形所有點在同一個平面內(建議將一個多邊形拆為多個三角形)2 多邊形必須是凸的,邊的延長線和其他邊不能相交

1)繪制四邊形

glBegin(GL_QUADS);

glVertex2f(……);

glVertex2f(……);

glVertex2f(……);

glVertex2f(……);

glEnd();

四個點必須在同一個平面

2)繪制連續四邊形

glBegin(GL_QUAD_STRip);

glVertex2f(……);點a

glVertex2f(……);點b

glVertex2f(……);點c

glVertex2f(……);點d

glVertex2f(……);點e

glVertex2f(……);點f

glEnd();繪制四邊形abcd和cdef,四邊形cdef四個點連接順序不定,點連接方向與四邊形abcd相同

3)繪制多邊形

glBegin(GL_POLYGON);

glVertex2f(……);點a

glVertex2f(……);點b

glVertex2f(……);點c

glVertex2f(……);點d

glVertex2f(……);點e

glVertex2f(……);點f

glEnd();

繪制多邊形abcdef

4)多邊形點畫模式

glEnable(GL_POLYGON_STIPPLE);啟用自定義圖形

(GLubyte *) pBitmap;

glPolygonStipple(pBitmap);設置自定義圖形,

模板每一行用十六進制表示

相關代碼見例3.10

5)三角形拼接多邊形時設置邊線是否可見

glEdgeFlag (FALSE);glVertex2f(……);……后續頂點開始的線段屬于內部線段,不可見

glEdgeFlag (TRUE);glVertex2f(……);……后續頂點開始的線段屬于外部線段,可見

參考:點擊打開鏈接

相關代碼見例3.11

例3.10多邊形點畫模式

#include <windows.h>  #include <math.h>  #include <GL/GL.h>  #include <GL/GLU.h>  #include <GL/glut.h>  // Bitmap of campfireGLubyte fire[] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x01, 0xf0,0x00, 0x00, 0x07, 0xf0, 0x0f, 0x00, 0x1f, 0xe0,0x1f, 0x80, 0x1f, 0xc0, 0x0f, 0xc0, 0x3f, 0x80,0x07, 0xe0, 0x7e, 0x00, 0x03, 0xf0, 0xff, 0x80,0x03, 0xf5, 0xff, 0xe0, 0x07, 0xfd, 0xff, 0xf8,0x1f, 0xfc, 0xff, 0xe8, 0xff, 0xe3, 0xbf, 0x70,0xde, 0x80, 0xb7, 0x00, 0x71, 0x10, 0x4a, 0x80,0x03, 0x10, 0x4e, 0x40, 0x02, 0x88, 0x8c, 0x20,0x05, 0x05, 0x04, 0x40, 0x02, 0x82, 0x14, 0x40,0x02, 0x40, 0x10, 0x80, 0x02, 0x64, 0x1a, 0x80,0x00, 0x92, 0x29, 0x00, 0x00, 0xb0, 0x48, 0x00,0x00, 0xc8, 0x90, 0x00, 0x00, 0x85, 0x10, 0x00,0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00 };GLboolean bCull = true;GLboolean bDepth = true;GLboolean bOutline = true;GLfloat xRot = 30.0f;GLfloat yRot = 30.0f;// Define a constant for the value of PI  #define GL_PI 3.1415f  // This function does any needed initialization on the rendering  void RenderScene(void){	// Clear the window	glClear(GL_COLOR_BUFFER_BIT);	// Turn culling on if flag is set		glPushMatrix();		glBegin(GL_POLYGON);	glVertex2f(-120.0f, 50.0f);	glVertex2f(20.0f, 50.0f);	glVertex2f(50.0f, 20.0f);	glVertex2f(50.0f, -20.0f);	glVertex2f(20.0f, -50.0f);	glVertex2f(-20.0f, -50.0f);	glVertex2f(-50.0f, -20.0f);	glVertex2f(-50.0f, 20.0f);	glEnd();	// Restore transformations	glPopMatrix();	glutSwapBuffers();}void SetuPRC(){	// Black background	glClearColor(0.0f, 0.0f, 0.0f, 1.0f);	// Set drawing color to red	glColor3f(1.0f, 0.0f, 0.0f);	// Enable polygon stippling	glEnable(GL_POLYGON_STIPPLE);	// Specify a specific stipple pattern	glPolygonStipple(fire);}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();}int main(int argc, char* argv[]){	glutInit(&argc, argv);	glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGBA);	glutInitWindowSize(800, 600);	glutCreateWindow("Bounce");	glutDisplayFunc(RenderScene);//顯示回調函數  	glutReshapeFunc(ChangeSize);//窗口大小變形回調函數  	SetupRC();	glutMainLoop();	return 0;}例3.11三角形拼接多邊形時設置邊線是否可見

#include <windows.h>  #include <math.h>  #include <GL/GL.h>  #include <GL/GLU.h>  #include <GL/glut.h>  // Define a constant for the value of PI  #define GL_PI 3.1415f  // This function does any needed initialization on the rendering  void RenderScene(void){	// Clear the window	glClear(GL_COLOR_BUFFER_BIT);	// Turn culling on if flag is set	GLboolean bEdgeFlag = FALSE;	glPushMatrix();		glBegin(GL_TRIANGLES);	glEdgeFlag(bEdgeFlag);	glVertex2f(-20.0f, 0.0f);	glEdgeFlag(TRUE);	glVertex2f(20.0f, 0.0f);	glVertex2f(0.0f, 40.0f);	glVertex2f(-20.0f, 0.0f);	glVertex2f(-60.0f, -20.0f);	glEdgeFlag(bEdgeFlag);	glVertex2f(-20.0f, -40.0f);	glEdgeFlag(TRUE);	glVertex2f(-20.0f, -40.0f);	glVertex2f(0.0f, -80.0f);	glEdgeFlag(bEdgeFlag);	glVertex2f(20.0f, -40.0f);	glEdgeFlag(TRUE);	glVertex2f(20.0f, -40.0f);	glVertex2f(60.0f, -20.0f);	glEdgeFlag(bEdgeFlag);	glVertex2f(20.0f, 0.0f);	glEdgeFlag(TRUE);	// Center square as two triangles	glEdgeFlag(bEdgeFlag);	glVertex2f(-20.0f, 0.0f);	glVertex2f(-20.0f, -40.0f);	glVertex2f(20.0f, 0.0f);	glVertex2f(-20.0f, -40.0f);	glVertex2f(20.0f, -40.0f);	glVertex2f(20.0f, 0.0f);	glEdgeFlag(TRUE);	// Done drawing triangles	glEnd();	// Restore transformations	glPopMatrix();	glutSwapBuffers();}void SetupRC(){	// Black background	glClearColor(0.0f, 0.0f, 0.0f, 1.0f);	// Set drawing color to red	glColor3f(1.0f, 0.0f, 0.0f);	//glPolygonMode(GL_BACK, GL_LINE);	glPolygonMode(GL_FRONT_AND_BACK, GL_LINE); 	// Enable polygon stippling	//glEnable(GL_POLYGON_STIPPLE);	// Specify a specific stipple pattern	//glPolygonStipple(fire);}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();}int main(int argc, char* argv[]){	glutInit(&argc, argv);	glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGBA);	glutInitWindowSize(800, 600);	glutCreateWindow("Bounce");	glutDisplayFunc(RenderScene);//顯示回調函數  	glutReshapeFunc(ChangeSize);//窗口大小變形回調函數  	SetupRC();	glutMainLoop();	return 0;}


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧美日韩亚洲精品一区二区三区| 欧美日韩成人网| 成人国产精品久久久久久亚洲| 亚洲白虎美女被爆操| 欧美激情国内偷拍| 亚洲free性xxxx护士hd| 国产91对白在线播放| 亚洲精品福利在线观看| 欧洲精品久久久| 国产成人综合精品在线| 欧美精品一区二区三区国产精品| 久久久久久91| 欧美日韩性视频在线| 国产成人福利夜色影视| 欧美综合在线第二页| 777国产偷窥盗摄精品视频| 精品国产欧美一区二区三区成人| 成人欧美一区二区三区在线湿哒哒| 国产日韩欧美视频| 亚洲欧美在线看| 亚洲欧美国产日韩中文字幕| 亚洲精品一区av在线播放| 久久久av免费| 少妇激情综合网| 久久视频在线播放| 国产精品视频网址| 亚洲精品v欧美精品v日韩精品| 欧美孕妇毛茸茸xxxx| 91精品国产综合久久久久久蜜臀| 亚洲白拍色综合图区| 日韩欧美999| 久久久亚洲网站| 91在线观看免费观看| 国产精品高潮在线| 欧美在线播放视频| 亚洲精品一区二区三区不| 国产精品午夜国产小视频| 久久亚洲精品网站| 亚洲精品福利在线观看| 日韩成人久久久| 欧美日韩亚洲天堂| 欧美高清理论片| 欧美精品激情在线观看| 亚洲第一福利网| 欧美性猛xxx| 国产美女精彩久久| 精品国产精品三级精品av网址| 韩国国内大量揄拍精品视频| 欧美猛交免费看| 在线观看国产成人av片| 欧美成人剧情片在线观看| 国产偷亚洲偷欧美偷精品| 成人在线一区二区| 国内精品久久久久久| 超碰97人人做人人爱少妇| 日韩av在线一区| 欧美日韩国产精品一区| 在线播放日韩精品| 国产成人亚洲综合| 热久久免费视频精品| 26uuu久久噜噜噜噜| 亚洲成人激情视频| 尤物yw午夜国产精品视频明星| 成人精品网站在线观看| 欧美激情一级精品国产| 日韩在线观看免费网站| 久久伊人精品一区二区三区| 欧美激情视频免费观看| 国产日产欧美a一级在线| 国产经典一区二区| 激情懂色av一区av二区av| 91麻豆国产语对白在线观看| 一区二区三区视频在线| 91豆花精品一区| 国产成人拍精品视频午夜网站| 91免费精品视频| 国产精品欧美一区二区三区奶水| 国内伊人久久久久久网站视频| 亚洲性视频网站| 中文字幕国内精品| 国产亚洲欧美视频| 亚洲三级av在线| 91久久嫩草影院一区二区| 日韩精品日韩在线观看| 久久婷婷国产麻豆91天堂| 日本成人免费在线| 97国产suv精品一区二区62| 国产亚洲精品久久久久久| 日本人成精品视频在线| 欧美激情一区二区久久久| 日韩av成人在线| 激情av一区二区| 在线播放日韩av| 久久久91精品国产| 日韩精品在线观看一区| 国产成人精品视频在线观看| 日韩天堂在线视频| 精品欧美aⅴ在线网站| 欧美亚洲另类制服自拍| 亚洲欧洲在线看| 亚洲欧美国产精品专区久久| 国产精品美女免费| 国产亚洲精品久久久久久| 精品久久久久久久中文字幕| 成人亚洲综合色就1024| 九九九久久久久久| 亚洲最大成人网色| 亚洲精品97久久| 亚洲精品不卡在线| 久久99精品久久久久久青青91| 夜夜嗨av色综合久久久综合网| 91麻豆桃色免费看| 亚洲视频axxx| 亚洲欧美日韩精品久久| 国产精品久久久久久影视| 中文字幕日韩在线播放| 日韩精品欧美国产精品忘忧草| 色悠久久久久综合先锋影音下载| 国产精品情侣自拍| 国产精品爽黄69| 日韩欧美中文第一页| 欧美日韩在线免费| 色综合亚洲精品激情狠狠| 亚洲成人精品视频| 亚洲精品99久久久久中文字幕| 亚洲www永久成人夜色| 成人两性免费视频| 国产丝袜一区视频在线观看| 欧美精品日韩www.p站| 亚洲欧洲一区二区三区久久| 国产成人综合精品| 亚洲免费一级电影| 日韩国产在线看| 日韩亚洲一区二区| 国产成人综合av| 伊人激情综合网| 亚洲久久久久久久久久| 国语自产偷拍精品视频偷| 亚洲男人天天操| 色七七影院综合| 欧美午夜www高清视频| 51精品国产黑色丝袜高跟鞋| 欧美国产日本在线| 国产精品人人做人人爽| 97久久国产精品| 亚洲天堂视频在线观看| 97视频在线观看播放| 国产成人精品一区二区在线| 精品视频在线播放| 国产精品免费小视频| 日韩免费av片在线观看| 亚洲欧美日韩中文在线制服| 色老头一区二区三区| 欧美日韩国产成人在线观看| 亚洲精品白浆高清久久久久久| 26uuu另类亚洲欧美日本老年| 亚洲欧美综合图区| 成人乱人伦精品视频在线观看| 日本精品久久中文字幕佐佐木| 992tv成人免费视频| 日韩电影视频免费| 国产自产女人91一区在线观看| 成人在线国产精品| 岛国av午夜精品|