OpenGL 练习03 3D Gasket
2014-05-11 10:05
169 查看
#include<gl/glut.h> #include<math.h> #include<stdlib.h> //a point data type typedef GLfloat point3[3]; int n = 20000;//number of recursive steps // vertices of an arbitrary tetrahedron point3 v[] = {{-1.0, -1.0, -1.0}, {1.0, -1.0, -1.0}, {0.0, 1.0, -1.0}, {0.0, 0.0, 1.0}}; // arbitrary initial location inside tetrahedron point3 p0 = {0.0, 0.0, 0.0}; void renderScene(void) { glClearColor(1.0, 1.0, 1.0, 0.0);//注意事项:要在glClear之前设置color! glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);// 清除屏幕及深度缓存 glLoadIdentity();// 重置当前的模型观察矩阵 glBegin(GL_POINTS);//绘制线段 glColor3f(0.0f, 0.0f, 1.0f);//设置顶点颜色 glVertex2fv(v[0]); glVertex2fv(v[1]); glVertex2fv(v[2]); glVertex2fv(v[3]); glEnd(); glBegin(GL_POINTS); for (int i=0; i<n; i++){ int j = rand() % 4; point3 p1; p1[0] = (p0[0] + v[j][0]) / 2; p1[1] = (p0[1] + v[j][1]) / 2; p1[2] = (p0[2] + v[j][2]) / 2; p0[0] = p1[0]; p0[1] = p1[1]; p0[2] = p1[2]; glVertex2fv(p1); //drawPoint(p1); } glEnd(); glutSwapBuffers();//当窗口模式为双缓存时,此函数的功能就是把后台缓存的内容交换到前台显示。当然,只有单缓存时,使用它的功能跟用glFlush()一样。而使用双缓存是为了把完整图画一次性显示在窗口上,或者是为了实现动画。 } int main(int argc, char *argv[]) { glutInit(&argc, argv);//初始化GLUT glutInitDisplayMode(GLUT_DEPTH | GLUT_DOUBLE | GLUT_RGBA);//设置图形显示模式。GLUT_DEPTH:使用深度缓存;GLUT_DOUBLE:使用双缓存; glutInitWindowPosition(100, 100);//设置窗口显示位置 glutInitWindowSize(600,600);//设置窗口大小 glutCreateWindow("Sierpinski");//创建带标题的窗口 glutDisplayFunc(renderScene);//为当前窗口设置显示回调函数 glutMainLoop();//进入GLUT事件处理循环 return 0; }
相关文章推荐
- OpenGL 练习05 3D Recursive Triangles
- OpenGL 练习12 texture
- 用PyOpenGL叩开3D的心扉——OpenGL全解析(2)
- 20170118C++阶段班04_STL_03MyString练习讲解
- 编程练习2——03
- 【菜鸟也能玩转OpenGL】3D技术中的相机变换
- OpenGL3D图形、旋转、纹理、键盘移动、光照、滤波、透明(完整)
- OpenGL实现3D立体显示
- win32 opengl example - 03 (MFC)
- 《Genesis-3D开源游戏引擎--横版格斗游戏制作教程03:碰撞检测》
- OPENGL着色器Uniform练习
- OpenGL学习笔记(5)3D基本概念
- 【Qt OpenGL教程】10:加载3D世界,并在其中漫游
- Androidb不使用OpenGL实现3D旋转效果
- Android Programming 3D Graphics with OpenGL ES (Including Nehe's Port)
- OpenGL学习-1-GLAUX建窗练习工程代码
- 附源码】【Android 3D OpenGL】开发之三——漂亮的金字塔【MacroCheng原创】
- 3D Graphics with OpenGL-Basic Theory
- 使用opengl载入静态3d模型.obj的方法
- OpenGL学习程序,创建一个3D的三角椎体和正方体并旋转