OpenGL 创建窗口/三角形VAO、VBO、EBO

使用OpenGL创建三角形

程序运行效果

运行效果

VAO vertex array object 顶点数组对象
VBO vertex buffer object 顶点缓冲对象
EBO element(index) buffer object 索引缓冲对象

VBO and VAO

Data Flow from CPU to GPU

  • Vertex Buffer Object (VBO)
    VBOs are buffers of data (bytes) on the GPU
    CPU sends all data to the GPU using VBOs before it is rendered
  • Vertex Array Object (VAO)
    VAOs are the link between VBO and shader variables
    Describe how to pull the data out of VBOs and feed it into the shader variables

VBO

所以VBO的作用就是将PC内存中的顶点数据缓冲到显卡的显存中:
CPU -> bytes(PC Memory) -> Display Card Memory -> GPU
CPU为通用的中央处理器,其特点是通用性,缺点是浮点运算能力,计算机的内存好处是CPU操作方便,相比显卡的显存来说,同时期相对来说显存会比内存速度更快,所以VBO的好处就是将磁盘到内存后的顶点数据缓冲到显卡,让GPU图形处理器去操作显存中的数据,而GPU对比CPU的好处就是图形图像的处理能力,浮点运算能力更强。
所以我们在渲染之前,让CPU使用VBO将所有数据发送到GPU,这样为我们的OpenGL处理图形带来效率的提升。
VBO

VAO

VAO则是VBO和着色器shader变量之间的链接,描述如何从VBO中提取数据并将其提供给着色器变量。
(VAO <-> VBO) <-> shader variables
VAO

Vertex Attribute Pointer 顶点属性指针

我们要操作VAO实际上就是使用顶点属性指针,并激活顶点属性数组。
Vertex Attrib Pointer

  • 将当前VBO绑定到当前VAO
  • 将着色器变量与当前VBO数据链接
  • 将布局信息封装在当前VAO中,以便稍后检索
    vap
    将此布局信息封装在当前VAO中,以便稍后检索
// 定义定点数组
GLfloat vertices1[] = {
   
    // 坐标              // 颜色
     0.4f, -0.4f, 0.0f,  1.0f, 0.0f, 0.0f,  // 右下 红
    -0.4f, -0.4f, 0.0f,  0.0f, 1.0f, 0.0f,  // 左下 绿
     0.0f,  0.4f, 0.0f,  0.0f, 0.0f, 1.0f   // 顶部 蓝
};
GLfloat vertices2[] = {
   
    // 坐标             // 颜色
    0.5f,  0.5f, 0.0f,  1.0f, 1.0f, 0.0f, // 右上 黄
    0.5f, -0.5f, 0.0f,  1.0f, 0.0f, 1.0f, // 右下 品
    0.0f, -0.5f, 0.0f,  0.0f, 
  • 3
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值