openGL简明教程(一)---开始的开始,绘制一个三角形-阿里云开发者社区

开发者社区> 云计算> 正文
登录阅读全文

openGL简明教程(一)---开始的开始,绘制一个三角形

简介: openGL简明教程(一)---开始的开始,绘制一个三角形

openGL简明教程(一)---开始的开始,绘制一个三角形

  • 因为课程原因我们要使用openGL,而且根据课程要求我们使用的是glut这个库,我翻阅了网上一些教程大都年代比较久远,而且排版很差。于是我打算自己以这些资料为蓝本出一个简明扼要的教程
  • 第一步肯定是要配置环境,有还没有配置的请参照我的博文,配置一下openGL的glut环境

1.画一个三角形

  • 不罗嗦我们直接上代码,在代码中讲解这个库的具体用法
  • 下面这个代码便是绘制一个三角形的代码
#include <GL/glut.h> //库的头文件

void renderScene(void) {

    glClear(GL_COLOR_BUFFER_BIT);//清除颜色缓冲区,大概类似于先清洗一下画板

    glBegin(GL_TRIANGLES);//开始我们的绘图操作,
    //函数里面的参数就是我们要绘制的图形的一些代码,之后教程会介绍
    //指定三角形三个顶点,很明显这个其实可以指定一个三维空间,
    //因为我们目前画的是一个平面图形所以第三个参数为0
    glVertex3f(-0.5, -0.5, 0.0);

    glVertex3f(0.5, 0.0, 0.0);

    glVertex3f(0.0, 0.5, 0.0);

    glEnd();//结束绘图

    glFlush();//强制刷新缓冲,保证绘图命令将被执行
}

int main(int argc, char** argv) {
    //如果你没有看上面那个renderScene函数而是找到了主函数开始阅读的话,那么恭喜你你已经是一个老鸟了
    //言归正传,我们接下来说一下这个库的具体使用
    glutInit(&argc, argv);//初始化glut,看里面的参数&argc, argv你发现和main函数的参数是一致的,
    //所以我们在书写main函数的时候要带着里面的参数。这条语句几乎每写一个glut的文件必用
    glutInitDisplayMode(GLUT_DEPTH | GLUT_SINGLE | GLUT_RGBA);//定义显示方式,一般默认写这样就可以。
    //你要是非得说自己生来不凡,那好满足你
    /*指定颜色模式的预定义常量有:

    1:GLUT_RGBA或者GLUT_RGB。指定一个RGBA窗口,这是一个默认的颜色模式。

    2:GLUT_INDEX。指定颜色索引模式。

    这个显示模式还允许你选择单缓冲区或双缓冲区窗口。

    1:GLUT_SINGLE.单缓冲区窗口。

    2:GLUT_BUFFER.双缓冲区窗口,这是产生流畅动画必须选的。

    还可以指定更多,如果你想指定一组特殊的缓冲的话,用下面的变量:

    1:GLUT_ACCUM.累积缓冲区。

    2:GLUT_STENCIL.模板缓冲区。

    3:GLUT_DEPTH.深度缓冲区。*/

    glutInitWindowPosition(100, 100);//指定下窗口的显示位置,
    //很简单指定(0,0)的话窗口就会显示在你屏幕的最左上角,这样说大家应该可以理解。

    glutInitWindowSize(320, 320);//指定下窗口的大小

    glutCreateWindow("openGL的helloword");//创建窗口,函数的参数是窗口的标题

    glutDisplayFunc(renderScene);//当窗口需要被重绘时调用的函数的名称,,
    //告诉GLUT使用我们指定的的函数来进行渲染。这个叫寄存回调,
    //我的理解就是我们要告诉glut我们要使用我们指定的这个renderScene
    //来进行画图操作让他执行renderScene将图形画出来,
    //好了我们将目光转向renderScene函数

    glutMainLoop();
}
  • 代码运行效果
  • image-20210916220414307

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

分享:
云计算
使用钉钉扫一扫加入圈子
+ 订阅

时时分享云计算技术内容,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。

其他文章
最新文章