//这是抄写的代码,出处在代码里面著名
//因为初学,只有抄写
#include <iostream> #include <gl/glut.h> #include <time.h> #include <stdlib.h> void init(){ glClearColor(1.0, 1.0, 1.0, 1.0);//设置系统状态变量-清屏颜色(白色) glColor3f(1.0, 0.0, 0.0);//设置系统状态变量-绘制颜色(红色) glMatrixMode(GL_PROJECTION); glLoadIdentity(); //此函数暂时不理解 gluOrtho2D(0.0, 500.0, 0.0, 500.0);//定义视图 glMatrixMode(GL_MODELVIEW); //“在程序设计过程中,往往不能跟踪当前的矩阵模式, //所以为了避免这种情况的发生,在比较复杂的程序里,总是要及时切换回模型空间” //--2006.2,清华大学出版社,《交互式计算机图形学-基于OpenGl的自顶向下方法》,Edward Angel 著,吴文国 译 } void display(){ typedef GLfloat Point2[2]; Point2 vertices[3] = {{0.0, 0.0}, {250.0, 500.0}, {500.0, 0.0}}; static Point2 p = {75.0, 50.0};//随机起始点 int j,k; int rand(); glClear(GL_COLOR_BUFFER_BIT); //srand(time(0)); for(k = 0;k < 5000;k++){ j = rand() % 3; //迭代随机起始点为原随机起始点与三角形其中一个定点的中点 p[0] = (p[0] + vertices[j][0]) / 2; p[1] = (p[1] + vertices[j][1]) / 2; glBegin(GL_POINTS); glVertex2fv(p); glEnd(); } glFlush(); } int main(int argc, char** argv) { glutInit(&argc, argv);//在窗口系统和OpenGl之间建立一种交互方式 glutInitDisplayMode (GLUT_SINGLE | GLUT_RGB);//单缓存,非索引 //(按照我的理解,非索引也就是RGB颜色模式) glutInitWindowSize (500,500); glutInitWindowPosition (100, 100); glutCreateWindow (argv[0]); init (); glutDisplayFunc(display); //glutReshapeFunc(reshape); glutMainLoop(); return 0; }
效果图: