美文网首页
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