当前位置: 首页 > news >正文

银川市住房和城乡建设局网站建设博物馆网站

银川市住房和城乡建设局网站,建设博物馆网站,公司网站用什么系统,网站 多线五、VBO、EBO 和 VAO VBO、EBO 和 VAO: VBO(Vertex Buffer Object)是指顶点缓冲区对象,而 EBO(Element Buffer Object)是指图元索引缓冲区对象,VAO 是顶点数据的缓冲区对象,VAO 和…

五、VBO、EBO 和 VAO

VBO、EBO 和 VAO

VBO(Vertex Buffer Object)是指顶点缓冲区对象,而 EBO(Element Buffer Object)是指图元索引缓冲区对象,VAO 是顶点数据的缓冲区对象,VAO 和 EBO 实际上是对同一类 Buffer 按照用途的不同称呼

VBO 和 EBO 的作用是在显存中提前开辟好一块内存,用于缓存顶点数据或者图元索引数据,从而避免每次绘制时的 CPU 与 GPU 之间的内存拷贝,可以提升渲染性能,降低内存带宽和功耗

顶点数组缓冲区对象、图元索引缓冲区对象。GL_ARRAY_BUFFER 标志指定的缓冲区对象用于保存顶点数组,GL_ELEMENT_ARRAY_BUFFER 标志指定的缓存区对象用于保存图元索引

VBO(EBO)的创建和更新。

// 创建 2 个 VBO(EBO 实际上跟 VBO 一样,只是按照用途的另一种称呼)
glGenBuffers(2, m_VboIds);// 绑定第一个 VBO,拷贝顶点数组到显存
glBindBuffer(GL_ARRAY_BUFFER, m_VboIds[0]);
glBufferData(GL_ARRAY_BUFFER, sizeof(vertices), vertices, GL_STATIC_DRAW);// 绑定第二个 VBO(EBO),拷贝图元索引数据到显存
glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, m_VboIds[1]);
glBufferData(GL_ELEMENT_ARRAY_BUFFER, sizeof(indices), indices, GL_STATIC_DRAW);
GL_STATIC_DRAW 标志标识缓冲区对象数据被修改一次,使用多次,用于绘制。

VBO:就是管理顶点数据,从内存的角度使用偏移量来保存

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-gUExmVaQ-1686049956021)(C:\Users\CreatWall_zhouwen\Desktop\pic\pic\2019080118415916.png)]

glUseProgram(m_ProgramObj);//不使用 VBO 的绘制
glEnableVertexAttribArray(0);
glVertexAttribPointer(0, 3, GL_FLOAT, GL_FALSE, (3+3)*sizeof(GLfloat), vertices);glEnableVertexAttribArray(1);
glVertexAttribPointer(1, 3, GL_FLOAT, GL_FALSE, (3+3)*sizeof(GLfloat), (vertices + 3));glDrawElements(GL_TRIANGLES, 6, GL_UNSIGNED_SHORT, indices);//使用 VBO 的绘制
glBindBuffer(GL_ARRAY_BUFFER, m_VboIds[0]);
glEnableVertexAttribArray(0);
glVertexAttribPointer(0, 3, GL_FLOAT, GL_FALSE, (3+3)*sizeof(GLfloat), (const void *)0);
glEnableVertexAttribArray(1);
glVertexAttribPointer(1, 3, GL_FLOAT, GL_FALSE, (3+3)*sizeof(GLfloat), (const void *)(3 *sizeof(GLfloat)));glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, m_VboIds[1]);glDrawElements(GL_TRIANGLES, 6, GL_UNSIGNED_SHORT, (const void *)0);

EBO:就是存储纹理数据相关的,就是存储纹理的索引数组的

//将GL_ELEMENT_ARRAY_BUFFER缓冲区绑定到EBO
glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, EBO);
//将索引坐标绑定到GL_ELEMENT_ARRAY_BUFFER
glBufferData(GL_ELEMENT_ARRAY_BUFFER, sizeof(indices), indices, GL_STATIC_DRAW);

VAO顶点数组对象,VAO 的主要作用是用于管理 VBO 或 EBO ,减少 glBindBuffer 、glEnableVertexAttribArray、 glVertexAttribPointer 这些调用操作,高效地实现在顶点数组配置之间切换

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-iOOPQIRJ-1686049956026)(C:\Users\CreatWall_zhouwen\Desktop\pic\pic\20190801184256585.png)]

// 创建并绑定 VAO
glGenVertexArrays(1, &m_VaoId);
glBindVertexArray(m_VaoId);// 在绑定 VAO 之后,操作 VBO ,当前 VAO 会记录 VBO 的操作
glBindBuffer(GL_ARRAY_BUFFER, m_VboIds[0]);
glEnableVertexAttribArray(0);
glVertexAttribPointer(0, 3, GL_FLOAT, GL_FALSE, (3+3)*sizeof(GLfloat), (const void *)0);
glEnableVertexAttribArray(1);
glVertexAttribPointer(1, 3, GL_FLOAT, GL_FALSE, (3+3)*sizeof(GLfloat), (const void *)(3 *sizeof(GLfloat)));glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, m_VboIds[1]);glBindVertexArray(GL_NONE);

绘画

// 是不是精简了很多?
glUseProgram(m_ProgramObj);glBindVertexArray(m_VaoId);glDrawElements(GL_TRIANGLES, 6, GL_UNSIGNED_SHORT, (const void *)0);

http://www.yayakq.cn/news/967468/

相关文章:

  • 用英文字母做网站关键词腾讯服务器租用
  • 广州网站建设新锐网站建设回访
  • 用邮箱做网站有哪些可以做调查的网站
  • 网站架构优化 ampwordpress特别慢
  • 在线制作网站页面域名解析要登入哪个网站做
  • 学院加强网站建设广告投放就选亿企联盟
  • 三合一网站什么开发好网站建设价格就要用兴田德润
  • 代码需求网站搜索引擎调词软件
  • 怎么查网站是不是百度做的网站举报中心官网
  • 做网站需要购买服务器吗wordpress 输出the id
  • 网站建设一六八互联网站建设学习什么
  • 阿里云备案网站名称官方网站app
  • 浙江省杭州市建设厅网站网站建设淮安
  • 网站制作课题组京东商城网站设计
  • 增城建设网站软件系统设计流程
  • 商家做网站的优点网页设计与网站建设在线考试
  • 杭州专业设计网站手机微网站模板下载
  • 网站建设与网页设计案例教程pdf下载营销型网站重要特点是?
  • 免费网站正能量app应用大全宜都网站seo
  • 厦门景观绿环建设行业协会网站江津网站建设方案
  • 自己做网站seo优化怎么做网站投票选举
  • 做yield网站多少钱引流推广的方法
  • 网站建设 中企动力烟台游戏网站建设与策划书
  • 郑州企业网站排名优化网站没有备案时
  • 自己做个网站需要什么如何选择扬中网站建设
  • 网站监控的软件怎么做开原铁岭网站建设
  • 新建设网站如何推广台州网站设计开发
  • 如何用iis部署网站全球做的最好的公司网站
  • 酒类产品网站设计爱站工具
  • 网站透明效果WordPress回车按钮