美文网首页
opengl绘制三角形

opengl绘制三角形

作者: 3c1b8ae8346c | 来源:发表于2021-09-07 16:49 被阅读0次

    步骤

    1. 编译和链接着色器程序
    2. 创建并且绑定VAO, VBO, EBO
    3. 使用着色器程序和VAO,并且渲染

    VBO 用来在GPU内存中存储顶点数据
    EBO 索引缓冲对象是通过索引去引用顶点数据
    VAO 用来在存储VBO和EBO的配置

    1.创建顶点缓冲对象
    glGenBuffers(1, p); 第一个参数是数量, 第二个是对象的ID

    glBindBuffer(GL_ARRAY_BUFFER, p) 绑定顶点缓冲对象
    GL_ARRAY_BUFFER: 表示顶点缓冲对象

    glBufferData(GL_ARRAY_BUFFER, sizeof(vertices), vertices, GL_STATIC_DRAW) 将用户数据复制到当前绑定缓冲对象
    GL_STATIC_DRAW: 数据不会或几乎不会改变
    GL_DYNAMIC_DRAW: 数据会被改变很多
    GL_STREAM_DRAW: 数据每次绘制都会改变

    glVertexAttribPointer()用来将顶点数据绑定到着色器上

    1. 顶点着色器
    #version 330 core   //版本声明
    layout (location = 0) in vec3 aPos;  //输入的有3个分量的数据,location表示绑定顶点缓冲对象的位置
    
    
    void main()
    {
        gl_Position =  vec4(aPos.x, aPos.y, aPos.z, 1.0);  //设置输出,gl_Position为vec4类型
    }
    
    1. 片段着色器
    #version 330 core
    out vec4 FragColor;
    
    void main()
    {
        FragColor = vec4(1.0f, 0.5f, 0.2f, 1.0f);
    }
    

    编译和链接着色器程序
    编译着色器
    glShaderSource(vertexShader, 1, &vertexShaderSource, NULL);
    glCompileShader(vertexShader);
    //链接着色器
    shaderProgram = glCreateProgram();
    glAttachShader(shaderProgram, vertexShader);
    glAttachShader(shaderProgram, fragmentShader);
    glLinkProgram(shaderProgram);
    //使用着色器程序
    glUseProgram(shaderProgram);

    相关文章

      网友评论

          本文标题:opengl绘制三角形

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