当前位置:网站首页>OpenGL中glGenBuffers glBindBuffer glBufferData的理解
OpenGL中glGenBuffers glBindBuffer glBufferData的理解
2022-08-11 05:30:00 【偷不偷月】
glGenBuffers glBindBuffer glBufferData的理解
//顶点数组对象
GLuint VAO1;//即相当于unsigned int
glGenVertexArrays(1, &VAO1);
glBindVertexArray(VAO1);
//顶点缓冲对象
GLuint VBO1;
glGenBuffers(1, &VBO1);
glBindBuffer(GL_ARRAY_BUFFER, VBO1);
glBufferData(GL_ARRAY_BUFFER, sizeof(vertices), vertices, GL_STATIC_DRAW);
//索引缓冲对象
GLuint EBO;
glGenBuffers(1, &EBO);
glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, EBO);
glBufferData(GL_ELEMENT_ARRAY_BUFFER, sizeof(indices), indices, GL_STATIC_DRAW);
//以下两行是将VBO与着色器的Attribute进行绑定
// //参数layout,GPU激活0号单元
glEnableVertexAttribArray(0);
//将数据传入着色器中。参数:layout(位置值为0的顶点属性);几维坐标;是否归一化;步长;偏移量
glVertexAttribPointer(0, 3, GL_FLOAT, GL_FALSE, 8 * sizeof(float), (void*)0);
glEnableVertexAttribArray(1);
glVertexAttribPointer(1, 3, GL_FLOAT, GL_FALSE, 8 * sizeof(float), (void*)(sizeof(float)*3));
glEnableVertexAttribArray(2);
glVertexAttribPointer(2, 2, GL_FLOAT, GL_FALSE, 8 * sizeof(float), (void*)(sizeof(float) * 6));
参考:链接

参考:链接
个人理解:
第一步:GLuint VBO1;
声明一个GLuint 类型引用变量,不予赋值,待用;
第二步:glGenBuffers(1, &VBO1);
指定缓存空间数量,创建缓存空间,并把空间地址存到变量VBO1下,使用时直接调用地址;
第三步:glBindBuffer(GL_ARRAY_BUFFER, VBO1);
确定该变量存储的缓冲类型,此处为顶点缓冲对象;
第四步:glBufferData(GL_ARRAY_BUFFER, sizeof(vertices), vertices, GL_STATIC_DRAW);
将相应的数据汇入。
边栏推荐
猜你喜欢

Scene-driven feature calculation method OpenMLDB, efficient implementation of "calculate first use"

父子节点数据格式不一致的树状列表实现

C语言-6月10日-my_strcpy函数的编写
![swagger错误:WARN i.s.m.p.AbstractSerializableParameter - [getExample,421] - Illegal DefaultValue null](/img/46/6ceeb330821d28b44742436da4123c.png)
swagger错误:WARN i.s.m.p.AbstractSerializableParameter - [getExample,421] - Illegal DefaultValue null

js learning advanced (event senior pink teacher teaching notes)

USB in NRZI to encode the data

C语言-7月18日-二维数组的学习

Asis2016 books null off by one

【LeetCode-13】罗马数字转整数

C语言-6月12日-字符替换问题,将一个‘ ’替换为2个‘#’
随机推荐
mongoose连接mongodb不错,显示encoding没有定义
Day 83
C语言-6月10日-my_strcpy函数的编写
[Meetup Preview] OpenMLDB+OneFlow: Link feature engineering to model training to accelerate machine learning model development
Day 68
C语言-6月8日-求两个数的最小公倍数和最大公因数;判断一个数是否为完数,且打印出它的因子
JS进阶网页特效(pink老师笔记)
Day 75
Day 76
Promise.race learning (judging the fastest execution of multiple promise objects)
第一章 Verilog语言和Vivado初步使用
Jetpack use exception problem collection
Day 78
PyQt5中调用.ui转换的.py文件代码解释
Certificate of SearchGuard configuration
C语言-7月18日-二维数组的学习
厂商推送平台-华为接入
gerrit configure SSH Key and account, email information
IO流和序列化与反序列化
JVM学习四:垃圾收集器与内存回收策略