opengl绘制三角形

步骤

  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);

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容