3.VBO 顶点缓冲对象, FBO 帧缓冲对象

OpenGL ES - VBO

1、VBO: Vertex Buffer object

2、为什么要用VBO?

不使用VBO时,我们每次绘制( glDrawArrays )图形时都是从本地内存处获取顶点数据然后传输给OpenGL来绘制,这样就会频繁的操作CPU->GPU增大开销,从而降低效率。

使用VBO,我们就能把顶点数据缓存到GPU开辟的一段内存中,然后使用时不必再从本地获取,而是直接从显存中获取,这样就能提升绘制的效率。

创建VBO

1、创建VBO

GLES20.glGenBuffers(1, vbos, 0);

2、绑定VBO

GLES20.glBindBuffer(GLES20.GL_ARRAY_BUFFER, vbos[0]);

3、分配VBO需要的缓存大小

GLES20.glBufferData(GLES20.GL_ARRAY_BUFFER, vertex.length * 4,null, GLES20.GL_STATIC_DRAW);

4、为VBO设置顶点数据的值

GLES20.glBufferSubData(GLES20.GL_ARRAY_BUFFER, 0, vertexData.length *
4, vertexBuffer);

5、解绑VBO

GLES20.glBindBuffer(GLES20.GL_ARRAY_BUFFER, 0);

使用VBO

1、绑定VBO

GLES20.glBindBuffer(GLES20.GL_ARRAY_BUFFER, vbos[0]);

2、设置顶点数据

GLES20.glVertexAttribPointer(vPosition, 2, GLES20.GL_FLOAT, false, 8, 0);

3、解绑VBO

GLES20.glBindBuffer(GLES20.GL_ARRAY_BUFFER, 0);

OpenGL ES - FBO

OpenGL ES - FBO

1、FBO: Frame Buffer object

2、为什么要用FBO?
当我们需要对纹理进行多次渲染采样时,而这些渲染采样是不需要展示给用户看的,所以我们就可以用一个单独的缓冲对象(离屏渲染)来存储我们的这几次渲染采样的结果,等处理完后才显示到窗口上。

3、优势
提高渲染效率,避免闪屏,可以很方便的实现纹理共享等。

4、渲染方式
渲染到缓冲区(Render)- 深度测试和模板测试
渲染到纹理(Texture)- 图像渲染

image

创建FBO

1、创建FBO

GLES20.glGenBuffers(1, fbos, 0);

2、绑定FBO

GLES20.glBindFramebuffer(GLES20.GL_FRAMEBUFFER, fbos[0]);

3、设置FBO分配内存大小

GLES20.glTexImage2D(GLES20.GL_TEXTURE_2D, 0, GLES20.GL_RGBA, 720, 1280, 0, GLES20.GL_RGBA, GLES20.GL_UNSIGNED_BYTE, null);

4、把纹理绑定到FBO

GLES20.glFramebufferTexture2D(GLES20.GL_FRAMEBUFFER, GLES20.GL_COLOR_ATTACHMENT0, GLES20.GL_TEXTURE_2D, textureid, 0);

5、检查FBO绑定是否成功

GLES20.glCheckFramebufferStatus(GLES20.GL_FRAMEBUFFER) != GLES20.GL_FRAMEBUFFER_COMPLETE)

6、解绑FBO

GLES20.glBindFramebuffer(GLES20.GL_FRAMEBUFFER, 0);

使用FBO

1、绑定FBO

GLES20.glBindFramebuffer(GLES20.GL_FRAMEBUFFER, fbos[0]);

2、获取需要绘制的图片纹理,然后绘制渲染

3、解绑FBO

GLES20.glBindFramebuffer(GLES20.GL_FRAMEBUFFER, 0);

4、再把绑定到FBO的纹理绘制渲染出来

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值