【opengl】【step by step】一————三角形
来源:互联网 发布:软件项目运营实施方案 编辑:程序博客网 时间:2024/06/10 19:44
今天学如何用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
- 【opengl】【step by step】一————三角形
- OpenGL step by step 一
- step by step——巴西巴西(一)
- 深入MySQL源码—Step By Step
- NBearV3 Step by Step教程——IoC进阶篇
- NBearV3 Step by Step教程——IoC篇
- NBearV3 Step by Step教程——ORM进阶篇
- NBearV3 Step by Step教程——ORM篇
- Step by step——步步为营,学习嵌入式wince驱动
- Step by step——WinX开发入门教程-1
- Step by step——WinX开发入门教程-2
- Step by step——WinX开发入门教程-3
- Step by step——WinX开发入门教程-4
- Step by step——WinX开发入门教程-5
- Step by step——WinX开发入门教程-6
- 数据库设计 Step by Step (1)——扬帆启航
- 数据库设计 Step by Step (2)——数据库生命周期
- 数据库设计 Step by Step (8)——视图集成
- 关于Android L软件安装问题的发现-基本解决5.0安装失败问题
- gcc等版本切换方法
- [每日练习]百度算法面试题
- js一些基本用法
- CentOS java环境配置记录
- 【opengl】【step by step】一————三角形
- CSS 选择器
- Hadoop实战视频教程下载
- C语言经典处理与应用函数(1)
- Activity 状态事件处理程序
- Oracle字符串函数
- [android开发]添加图标到桌面
- Alpha、Beta、RC、GA版本的区别
- 金额数字转换到大写