OpenGL画点、直线、虚线和多边形

// 从这里开始进行所有的绘制int DrawGLScene(GLvoid){glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);// 清除屏幕和深度缓存glLoadIdentity();// 重置当前的模型观察矩阵

glColor3f(1.0, 0.0,0.0); //设置接下来所要画的东西的颜色

//绘制一个矩形,默认为填充模式glPolygonMode(GL_FRONT_AND_BACK,GL_LINE);glBegin(GL_POLYGON);// 设置各个顶点,glBegin开始,glEnd结束 glVertex3f(0.25,0.25,0.4);glVertex3f(0.75,0.25,0.4);glVertex3f(0.75,0.75,0.4);glVertex3f(0.25,0.75,0.4); glEnd();glPolygonMode(GL_FRONT_AND_BACK,GL_FILL);glPointSize(10);//画点,通过glPointSize设置一个点的宽度glBegin(GL_POINTS);glVertex3f(0.25,0.25,0.0);glVertex3f(0.75,0.25,0.0);glVertex3f(0.75,0.75,0.0);glVertex3f(0.25,0.75,0.0);glEnd();glPointSize(1);//画 虚线 ,点线,通过glLineStipple设置虚线模型,然后enable GL_LINE_STIPPLE开关glLineStipple(2, 0x5555);glEnable(GL_LINE_STIPPLE);glBegin(GL_LINES);glVertex3f(0.25,0.85,0.6);glVertex3f(0.75,0.85,0.6);glEnd();glDisable(GL_LINE_STIPPLE);

//画圆,通过glLineWidth设置直线的宽度glColor3f(1.0,0.0,0.0);//颜色修改为红色glLineWidth(10); glBegin(GL_LINE_LOOP);

#define PI 3.1415926f#define POINTS 100float angel = 0.0f;for (int i =0 ; i<POINTS; i++){ angel = 2.0f * PI * i / POINTS;glVertex3f(cos(angel),sin(angel),0.5f);}glEnd();glLineWidth(1);glFlush();return TRUE;}

// 以下是关于缓存的一些函数

glClearDepth(1.0f);// 设置深度缓存

glEnable(GL_DEPTH_TEST);// 启用深度测试glDepthFunc(GL_LEQUAL);// 所作深度测试的类型

下面附上画奥运五环的小程序及结果:

#include <GL/glut.h>#include <GL/GLAUX.H>GLuint OlympicRings;void initialize(){glClearColor(0.25, 0.0, 0.2, 10.5); //清屏,,设置底部为白色OlympicRings = glGenLists(1); //显示列表glNewList(OlympicRings, GL_COMPILE);glColor3f(1.0, 1.0, 0.0);//绘制黄色圆环glTranslatef(-25.0, -15.0, 0.0); //坐标移动glutSolidTorus(1, 20.0, 15, 60);glColor3f(0.0, 1.0, 0.0); //绘制绿色圆环glTranslatef(45.0, 0.0, 0.0); //坐标移动glutSolidTorus(1, 20.0, 15, 60);glColor3f(0.0, 0.0, 0.0); //绘制黑色圆环glTranslatef(-20.0, 25.0, 0.0); //坐标移动glutSolidTorus(1, 20, 15, 60);glColor3f(0.0, 0.0, 1.0); //绘制蓝色环glTranslatef(-45.0, 0.0, 0.0); //坐标移动glutSolidTorus(1, 20, 15, 60);glColor3f(1.0, 0.0, 0.0); //绘制红色环glTranslatef(90, 0.0, 0.0); //坐标移动glutSolidTorus(1, 20.0, 15, 60);glEndList();}void display(){glClear(GL_COLOR_BUFFER_BIT);glMatrixMode(GL_MODELVIEW);glLoadIdentity();glCallList(OlympicRings);//调用显示列表glFlush();}int main(){glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB);glutInitWindowSize(800, 600);glutInitWindowPosition(200, 50);glutCreateWindow("奥运五环");glutDisplayFunc(display);glMatrixMode(GL_PROJECTION);glLoadIdentity();gluOrtho2D(-70.0f, 70.0f, -70.0f, 70.0f);initialize();glutMainLoop();return 0;}

一个人的期望值越大,心理承受力就会越小,就越经受不住失败的打击,

OpenGL画点、直线、虚线和多边形

相关文章:

你感兴趣的文章:

标签云: