【opengl】【step by step】一————三角形

来源:互联网 发布:软件项目运营实施方案 编辑:程序博客网 时间:2024/05/17 21:54

今天学如何用opengl绘制一个三角形,先直接贴代码:

#include <GL/glut.h>  void renderScene(){// 清除颜色缓存glClear(GL_COLOR_BUFFER_BIT);const GLfloat vertices[3][2]={{0.0,0.0},{50.0,0.0},{25.0,50.0}};// 设置顶点颜色glColor3f(1.0,0.0,0.0);glBegin(GL_TRIANGLES);glVertex2fv(vertices[0]);glVertex2fv(vertices[1]);glVertex2fv(vertices[2]);glEnd();glFlush();}void myInit(){// 设置清屏颜色为白色glClearColor(1.0,1.0,1.0,1.0);glMatrixMode(GL_PROJECTION);glLoadIdentity();gluOrtho2D(0.0,50,0.0,50);glMatrixMode(GL_MODELVIEW);}//主程序入口  int main(int argc, char* argv[])  {  // 初始化窗口和opengl之间的交互glutInit(&argc,argv);  // 初始化显示模式,使用RGB颜色,使用单缓存glutInitDisplayMode(GLUT_RGB | GLUT_SINGLE);// 初始化窗口大小glutInitWindowSize(500,500);// 初始化窗口位置glutInitWindowPosition(200,200);// 创建窗口glutCreateWindow("draw triangle");<pre class="cpp" name="code">         // 绑定显示回调函数glutDisplayFunc(renderScene);

myInit();glutMainLoop();return 0; }

 

现在开始分析代码

首先我们要绘图,肯定要创建窗口,

         // 初始化窗口和opengl之间的交互glutInit(&argc,argv);  // 初始化显示模式,使用RGB颜色,使用单缓存glutInitDisplayMode(GLUT_RGB | GLUT_SINGLE);// 初始化窗口大小glutInitWindowSize(500,500);// 初始化窗口位置glutInitWindowPosition(200,200);// 创建窗口glutCreateWindow("draw triangle");

这四句代码就是做这件事。

就准备开始绘制,但是绘制的之前还要设置一些参数,比如窗口的背景颜色,裁剪体的位置大小等。

          // 设置清屏颜色为白色glClearColor(1.0,1.0,1.0,1.0);glMatrixMode(GL_PROJECTION);glLoadIdentity();gluOrtho2D(0.0,50,0.0,50);glMatrixMode(GL_MODELVIEW);

上面五句,首先将颜色缓存的值全部设置成白色,由此来达到设置背景颜色为白色。为之后的清除操作作准备

         // 清除颜色缓存glClear(GL_COLOR_BUFFER_BIT);

 

然后接下来三句是为了设置裁剪体,glLoadIdentity()将栈顶矩阵置为单位矩阵,使设置裁剪体的时候不受之间的影响。

最后面一句将矩阵模式置回模视图矩阵。

之后opengl就会循环调用绑定好的显示回调函数:

         // 绑定显示回调函数glutDisplayFunc(renderScene);




 

0 0
原创粉丝点击