首页 > 代码库 > openGL学习笔记二:看看上一篇我们写的代码
openGL学习笔记二:看看上一篇我们写的代码
哈哈, 千呼万唤始出来, 我们第二篇笔记新鲜出炉了( 话说不是没隔多久么。。。。)
呵呵, 闲话不多说, 我们来看看上一篇我们写的代码, 知其然也要知其所以然啊
#include <gl/glut.h> void display() { glClear( GL_COLOR_BUFFER_BIT); glRectf( -1, -1, 1, 1); glFinish(); } int main( int argc, char* argv[]) { glutInit( &argc, argv); glutInitDisplayMode( GLUT_RGB | GLUT_SINGLE); glutInitWindowPosition( 0, 0); glutInitWindowSize( 1280, 720); glutCreateWindow( "这个应该是标题吧"); glutDisplayFunc( &display); glutMainLoop(); return 0; }
先从头文件说起吧, 正规的OpenGL在使用的时候会包含
#include <GL/gl.h> #include <GL/glu.h>
这两个头文件, 但是小伙伴们还记得刚刚我们使用的glut库吗?在glut库里面直接就给我们包含了这两个头文件, 所以我们只需要包含glut.h就好了。
对于一个C语言程序, 我们首先会看他的主函数对吧, 我们现在就依次看看每句代码表示了什么:
glutInit( &argc, argv);初始化, 一般就是这样写了
glutInitDisplayMode( GLUT_RGB | GLUT_SINGLE);设置显示的方式, 参数
值 | 对应宏定义 | 意义 |
GLUT_RGB | 0x0000 | 指定 RGB 颜色模式的窗口 |
GLUT_RGBA | 0x0000 | 指定 RGBA 颜色模式的窗口 |
GLUT_INDEX | 0x0001 | 指定颜色索引模式的窗口 |
GLUT_SINGLE | 0x0000 | 指定单缓存窗口 |
GLUT_DOUBLE | 0x0002 | 指定双缓存窗口 |
GLUT_ACCUM | 0x0004 | 窗口使用累加缓存 |
GLUT_ALPHA | 0x0008 | 窗口的颜色分量包含 alpha 值 |
GLUT_DEPTH | 0x0010 | 窗口使用深度缓存 |
GLUT_STENCIL | 0x0020 | 窗口使用模板缓存 |
GLUT_MULTISAMPLE | 0x0080 | 指定支持多样本功能的窗口 |
GLUT_STEREO | 0x0100 | 指定立体窗口 |
GLUT_LUMINANCE | 0x0200 | 窗口使用亮度颜色模型 |
glutInitWindowPosition( 0, 0);设置窗口在屏幕的什么位置, 屏幕左上角为坐标原点http://write.blog.csdn.net/postedit
glutInitWindowSize( 1280, 720);设置窗口大小
glutCreateWindow( "这个应该是标题吧");根据前面的信息创建一个窗口, 传入的参数是窗口的名称(注意, 现在创建好的窗口不会显示出来, 只有在使用了glutMainLoop()之后才会显示到屏幕上)
glutDisplayFunc( &display);注册一个绘图函数, 当我们需要绘图时就调用这个函数
glutMainLoop();进入glut事件处理循环, 让所有与事件有关的函数无限循环
glClear( GL_COLOR_BUFFER_BIT);清除, 这里是清除颜色
GL_COLOR_BUFFER_BIT: 当前可写的颜色缓冲
GL_DEPTH_BUFFER_BIT: 深度缓冲
GL_ACCUM_BUFFER_BIT: 累积缓冲
GL_STENCIL_BUFFER_BIT: 模板缓冲
glRectf( -1, -1, 1, 1);绘制一个矩形, 四个参数表示位于对角线上两个点的横纵坐标, 默认坐标在-1到1之间, 当然, 我们后面可以修改他
glFinish();向图形硬件提交缓冲区里的指令,并等待所有指令执行完成后再返回(说的通俗点就是让openGL的命令立即执行, 不会在缓冲区等待等待)。
小伙伴们看了注释是不是觉得OpenGL也不是想象中的那么难吧, 哦, 对了, 还有一个忘了说了, 以glut开头的都是glut库提供的函数, 以gl开头的都是标准的openGL函数, 小伙伴们都清楚了么。
每天积累一点点, 总有一天你会成为大神的
openGL学习笔记二:看看上一篇我们写的代码
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。