文档章节

顶点数组,缓冲区对象,顶点数组对象的关系

l
 leaveMeAlone
发布于 2017/03/23 14:59
字数 418
阅读 70
收藏 0

-、顶点数组

  •     顶点数组的出现,避免了固定管线中对于每个顶点的指定,减少了调用,同时可以避免冗余顶点的传输。
    
  1. 启用顶点数组 glEnableClientState(GLenum array) array有8个 包括顶点 颜色 纹理坐标等等。对应禁用函数glDisableClientState(GLenum array).
  2. 指定顶点数组 glVertexPointer(GLint size ,GLenum type,GLsizei stride ,const GLVoid* pointer); glColorPointer等等
  3. 解引用 glArrayElement(GLint ith)解引用单个数组元素 glDrawElements 解引用数组元素的一个列表

二、缓冲区对象vbo

  • opengl 3.1只支持顶点数组对象存储在缓冲区对象中。
    

创建

  1. 缓冲区对象 glGenBuffers(GLsizei n, GLuint * buffers);
  2. 激活缓冲区对象 glBindBuffer(GLenum target, GLuint buffer);
  3. 数据分配和初始化缓冲区对象 glBufferData;
  4. 更新缓冲区数据 glBufferSubData 或者GLvoid* glMapBuffer GLMapBufferRange glUnmapBuffer
  5. 在缓冲区对象之间复制数据 glCopyBufferSubData
  6. 清楚缓冲区对象 glDeleteBuffers

三、顶点数组对象vao

  • 一个顶点数组对象捆绑了一组调用的集合。也就是说 通过顶点对象绑定了顶点缓冲区 element缓冲区,最后只要激活这个顶点数组对象 就可以直接解引用对应绑定的各种缓冲区对象。
  1. 创建顶点数组对象 glGenVertexArrays(GLsizei n,GLuint* arrays); 1.激活顶点缓冲区对象 glBindVertexArray;
  2. 清楚顶点数组对象 glDeleteVertexArrays;
  3. ~~`.glVertexAttribPointer 向shader传统attribute 属性数组
  • 所以一个典型的vao用法伪代码可以如下:
glGenVertexArrays(1,&vao)
glBindVertexArray(vao)
glGenBuffers(2,buffers)
glBindBuffer(GL_ARRAY_BUFFER,buffers[0]);
glBindBufferData(GL_ARRAY_BUFFER,xxxx,xx,);
glBindBuffer(GL_ELEMENT_ARRAY,buffers[1]);
glBindBufferData(GL_ELEMENT_ARRAY,xxxx,xx,);

glBindVertexArray(vao)
glDrawElements(GL_TRIANGLE, _indexCount, GL_UNSIGNED_BYTE, 0);

© 著作权归作者所有

共有 人打赏支持
l
粉丝 0
博文 15
码字总数 3993
作品 0
杭州
私信 提问
webgl第八课-绘制多个顶点的基础知识

版权声明:本博客只做技术交流使用 https://blog.csdn.net/weixin_39452320/article/details/81173710 需要源码可以Q群:828202939 或者点击这里 希望可以和大家一起学习、一起进步!!纯手打...

webgl_谷子
2018/07/23
0
0
着色器的编译和屏幕上面绘图

关于opengl es的着色器语言,我推荐一个地址:http://imgtec.eetrend.com/blog/1948,这篇文章写的相当不错,大家要是有兴趣可以去看一下。 我在这里简单总结一下,uniform在着色器中是只读的...

流云1987
2016/09/27
15
0
Direct3D 11 Tutorial 2: Rendering a Triangle_Direct3D 11 教程2:渲染一个三角形

概要 在之前的教程中,我们建立了一个最小的Direct3D 11的应用程序,它用来在窗口上输出一个单一颜色。在本次教程中,我们将扩展这个应用程序,在屏幕上渲染出一个单一颜色的三角形。我们将通...

Zoctopus·Lian
2018/10/06
0
0
在Android中使用OpenGL ES进行开发第(二)课:定义图形

一、前期基础知识储备 笔者计划写三篇文章来详细分析OpenGL ES基础的同时也是入门关键的三个点: ①OpenGL ES是什么?与OpenGL的关系是什么?——概念部分 ②使用OpenGLES绘制2D/3D图形的第一...

weixin_41101173
2018/04/22
0
0
缓冲区对象到底好的哪里

Q1:在显示几何图元时可以使用顶点数组,应用程序(客户端)会不断向opengl内核(服务)发送数据。如果这些数据是实时(或者可能是定时器控制),这时候在服务端开辟缓冲区对象以及更新这些缓冲...

loadomain
2013/11/23
217
1

没有更多内容

加载失败,请刷新页面

加载更多

大数据反欺诈技术架构

一年多以前,有朋友让我聊一下你们的大数据反欺诈架构是怎么实现的,以及我们途中踩了哪些坑,怎么做到从30min延迟优化到1s内完成实时反欺诈。当时呢第一是觉得不合适,第二也是觉得场景比较...

微笑向暖wx
7分钟前
0
0
flink-系统内部消息传递的exactly once语义

At Most once,At Least once和Exactly once 在分布式系统中,组成系统的各个计算机是独立的。这些计算机有可能fail。 一个sender发送一条message到receiver。根据receiver出现fail时sender如...

xtof
15分钟前
0
0
iOS程序执行顺序和UIViewController 的生命周期(整理)

说明:此文是自己的总结笔记,主要参考: iOS程序的启动执行顺序 AppDelegate 及 UIViewController 的生命周期 UIView的生命周期 言叶之庭.jpeg 一. iOS程序的启动执行顺序 程序启动顺序图 iO...

壹峰
16分钟前
0
0
配置网络、远程登录、Linux秘钥认证

配置网络 一台服务器安装完系统之后不管是为了方便管理还是业务需要,我们都要给它配置ip地址。让机器能够联网。在现实的生产环境的当中,往往我们给服务器配置的ip都是提前规划好的,但是在...

李超小牛子
20分钟前
0
0
dotConnect for Oracle入门指南(五):检索和修改数据

【下载dotConnect for Oracle最新版本】 dotConnect for Oracle(原名OraDirect.NET)建立在ADO.NET技术上,为基于Oracle数据库的应用程序提供完整的解决方案。它为设计应用程序结构带来了新的...

电池盒
20分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部