开发环境是codeblocks+glut,其中glut库的作用是封装windows程序的消息循环等标准windows程序结构,屏蔽与openGL开发无关的复杂性(在后面的代码可以看到,在程序模版里面放置一些固定的封装好的函数调用就可以了),使用户专注于openGL本身。这个开发环境既轻量又容易配置,只要配置好环境,openGL还是很容易上手的。具体的配置可参考:
http://www.cnblogs.com/lycheng/archive/2011/09/10/2173419.html
下面分别使用GL_LINE_LOOP和GL_LINES两种模式绘制五角星。
效果图如下:
在本文开头环境下的完整代码:
#include<windows.h> #include<GL/glut.h> #include<cmath> const GLfloat R=0.5f; const GLfloat Pi=3.1415926536f; static void myDisplay(void) { glClear(GL_COLOR_BUFFER_BIT); glBegin(GL_LINE_LOOP); for(int i=0;i<360;i++) { glVertex2f(R*cos(i/360.0*2.0*Pi)-0.5,R*sin(i/360.0*2.0*Pi)+0.5); } float aa=cos(54.0/360.0*2*Pi); float bb=aa*tan(36.0/360.0*2*Pi); float cc=sin(54.0/360.0*2*Pi)-bb; for(int i=0;i<360;i+=72) { glVertex2f(R*cos(i/360.0*2.0*Pi)-0.5,R*sin(i/360.0*2.0*Pi)+0.5); glVertex2f(cc*R*cos((i+36)/360.0*2.0*Pi)-0.5,cc*R*sin((i+36)/360.0*2.0*Pi)+0.5); } glEnd(); glBegin(GL_LINES); float pta[5],ptb[5]; for(int i=0;i<5;i+=1) { pta[i]=R*cos(i/5.0*2.0*Pi); ptb[i]=R*sin(i/5.0*2.0*Pi); } glVertex2f(pta[0]+0.5,ptb[0]-0.5); glVertex2f(pta[2]+0.5,ptb[2]-0.5); glVertex2f(pta[0]+0.5,ptb[0]-0.5); glVertex2f(pta[3]+0.5,ptb[3]-0.5); glVertex2f(pta[1]+0.5,ptb[1]-0.5); glVertex2f(pta[3]+0.5,ptb[3]-0.5); glVertex2f(pta[1]+0.5,ptb[1]-0.5); glVertex2f(pta[4]+0.5,ptb[4]-0.5); glVertex2f(pta[2]+0.5,ptb[2]-0.5); glVertex2f(pta[4]+0.5,ptb[4]-0.5); glEnd(); glFlush(); } int main(int argc, char *argv[]) { glutInit(&argc, argv); glutInitDisplayMode(GLUT_RGB | GLUT_SINGLE); glutInitWindowPosition(100,100); glutInitWindowSize(400,400); glutCreateWindow("GLUT Shapes"); glutDisplayFunc(&myDisplay); glutMainLoop(); return EXIT_SUCCESS; }