国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

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

OpenGL 學(xué)習(xí)筆記3_3(繪制三角形相關(guān))

2019-11-11 04:19:37
字體:
供稿:網(wǎng)友

藍(lán)寶書 第三章

畫三角形 triangle

1)繪制三角形(三個(gè)點(diǎn)確定一個(gè)三角形)

glBegin(GL_TRIANGLES);glVertex2f(0.0f, 0.0f); // 點(diǎn)aglVertex2f(25.0f, 25.0f); // 點(diǎn)bglVertex2f(50.0f, 0.0f); // 點(diǎn)cglVertex2f(-50.0f, 0.0f); // 點(diǎn)d glVertex2f(-75.0f, 50.0f); // 點(diǎn)eglVertex2f(-25.0f, 0.0f); // 點(diǎn)fglEnd(); 繪制三角形abc和三角形def

2)繪制三角形(新增三角形頂點(diǎn))

glBegin(GL_TRIANGLE_STRip);glVertex2f(0.0f, 0.0f); // 點(diǎn)aglVertex2f(25.0f, 25.0f); // 點(diǎn)bglVertex2f(50.0f, 0.0f); // 點(diǎn)cglVertex2f(-50.0f, 0.0f); // 點(diǎn)d glVertex2f(-75.0f, 50.0f); // 點(diǎn)eglVertex2f(-25.0f, 0.0f); // 點(diǎn)fglEnd(); 繪制三角形abc、bcd、def(三點(diǎn)連線順序不定,應(yīng)該是與第一個(gè)三角形順時(shí)針or逆時(shí)針連線統(tǒng)一)

3)繪制三角形(同一頂點(diǎn),最后封閉)

glBegin(GL_TRIANGLE_FAN);glVertex2f(0.0f, 0.0f); // 點(diǎn)aglVertex2f(25.0f, 25.0f); // 點(diǎn)bglVertex2f(50.0f, 0.0f); // 點(diǎn)cglVertex2f(-50.0f, 0.0f); // 點(diǎn)d glVertex2f(-75.0f, 50.0f); // 點(diǎn)eglVertex2f(-25.0f, 0.0f); // 點(diǎn)fglEnd();

繪制三角形abc、acd、ade、aef及afb

相關(guān)代碼見例3.8

例3.8 繪制三角形

#include <windows.h>  #include <math.h>  #include <GL/GL.h>  #include <GL/GLU.h>  #include <GL/glut.h>  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){	GLfloat x, y, angle; // Storage for coordinates and angles	int iPivot = 1; // Used to flag alternating colors	// Clear the window and the depth buffer	glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);	// Turn culling on if flag is set	if (bCull)		glEnable(GL_CULL_FACE);	else		glDisable(GL_CULL_FACE);	// Enable depth testing if flag is set	if (bDepth)		glEnable(GL_DEPTH_TEST);	else		glDisable(GL_DEPTH_TEST);	// Draw the back side as a wireframe only, if flag is set	if (bOutline)		glPolygonMode(GL_BACK, GL_LINE);	else		glPolygonMode(GL_BACK, GL_FILL);	// Save matrix state and do the rotation	glPushMatrix();	glRotatef(xRot, 1.0f, 0.0f, 0.0f);	glRotatef(yRot, 0.0f, 1.0f, 0.0f);	// Begin a triangle fan	glBegin(GL_TRIANGLE_FAN);	// Pinnacle of cone is shared vertex for fan, moved up z-axis	// to PRoduce a cone instead of a circle	glVertex3f(0.0f, 0.0f, 75.0f);	// Loop around in a circle and specify even points along the circle	// as the vertices of the triangle fan	for (angle = 0.0f; angle < (2.0f*GL_PI); angle += (GL_PI / 8.0f))	{		// Calculate x and y position of the next vertex		x = 50.0f*sin(angle);		y = 50.0f*cos(angle);		// Alternate color between red and green		if ((iPivot % 2) == 0)			glColor3f(0.0f, 1.0f, 0.0f);		else			glColor3f(1.0f, 0.0f, 0.0f);		// Increment pivot to change color next time		iPivot++;		// Specify the next vertex for the triangle fan		glVertex2f(x, y);	}	// Done drawing fan for cone	glEnd();	// Restore transformations	glPopMatrix();	glutSwapBuffers();}void SetupRC(){	// Black background	glClearColor(0.0f, 0.0f, 0.0f, 1.0f);	// Set drawing color to green	glColor3f(0.0f, 1.0f, 0.0f);	// Set color shading model to flat	glShadeModel(GL_FLAT);	// Clockwise-wound polygons are front facing; this is reversed	// because we are using triangle fans	glFrontFace(GL_CW);}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);//顯示回調(diào)函數(shù)  	glutReshapeFunc(ChangeSize);//窗口大小變形回調(diào)函數(shù)  	SetupRC();	glutMainLoop();	return 0;}


發(fā)表評論 共有條評論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 芷江| 集贤县| 左云县| 贵德县| 财经| 迭部县| 甘孜县| 汕头市| 民权县| 江川县| 芜湖县| 江北区| 乾安县| 天水市| 昭苏县| 蒙阴县| 扎赉特旗| 临桂县| 全州县| 乌兰察布市| 青浦区| 开原市| 比如县| 长岛县| 阿图什市| 镇康县| 四平市| 铜梁县| 芮城县| 娄烦县| 张家口市| 肥东县| 耒阳市| 株洲县| 湄潭县| 南通市| 桃江县| 武乡县| 兴文县| 大埔区| 股票|