美文网首页
OpenGL 绘制第一个三角形

OpenGL 绘制第一个三角形

作者: ZAREMYDREAM | 来源:发表于2020-07-02 22:10 被阅读0次

1、导入头文件

#include "GLTools.h"
#include <GLUT/GLUT.h>

2、定义全局变量

//定义着色管理器
GLShaderManager shaderManager;
//GLTools中的简单容器
GLBatch triangleBatch;

3、主函数实现

int main(int argc ,char *argv[]) {
    //初始化glut库
    glutInit(&argc, argv);
    //初始显示模式
    //GLUT_DOUBLE 指定双缓存窗口
    //GLUT_RGBA RGBA染色模式
    //GLUT_DEPTH 使用深度缓存
    //GLUT_STENCIL 使用模板缓存
    glutInitDisplayMode(GLUT_DOUBLE|GLUT_RGBA|GLUT_DEPTH|GLUT_STENCIL);
    //指定GLUT窗口大小
    glutInitWindowSize(800, 600);
    //GLUT窗口标题
    glutCreateWindow("Triangle");
    //指定窗口大小改变时调用的函数
    glutReshapeFunc(changeSize);
    //指定渲染时调用的函数
    glutDisplayFunc(renderSecene);
    //初始化时有没有错误
    GLenum err = glewInit();
    if (err != GLEW_OK) {
        fprintf(stderr, "grew err:%s\n", glewGetErrorString(err));
    }
    
    //图形数据准备工作
    setupRC();
    //启动循环监控
    glutMainLoop();
    return 0;
}

4、图形准备工作

void setupRC (){
    //设置背景色
    glClearColor(0.2, 0.7, 0.2, 1);
    //存储着色器初始化
    shaderManager.InitializeStockShaders();
    //设置三角形顶点
    GLfloat vVerts[] = {
        -0.8f,0.0f,0.2f,
        0.7f,0.2f,0.3f,
        0.0f,0.4f,0.0f,
    };
    //告诉着色器这是三角形的三个顶点
    triangleBatch.Begin(GL_TRIANGLES, 3);
    triangleBatch.CopyVertexData3f(vVerts);
    triangleBatch.End();
}

5、视图尺寸改变时调用函数

void changeSize(int w, int h) {
    //修改绘制区域长宽
    glViewport(0, 0, w, h);
}

6、开始渲染或改变渲染时调用

void renderSecene(){
    //清除出特定缓存区
    glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT|GL_STENCIL_BUFFER_BIT);
    //三角形颜色
    GLfloat vRed[] = {1.0f,0.0f,0.0f};
    //使用着色器渲染颜色
    shaderManager.UseStockShader(GLT_SHADER_IDENTITY, vRed);
    //提交着色器
    triangleBatch.Draw();
    //后台进行渲染,完成后交给前台
    glutSwapBuffers();
}

7、运行得到三角形


运行截图

相关文章

网友评论

      本文标题:OpenGL 绘制第一个三角形

      本文链接:https://www.haomeiwen.com/subject/qapdqktx.html