OpenGL ES 3.0之Fragment buffer objects(FBO)详解(二)

  我们可以使用帧缓冲对象来实现离屏渲染。帧缓冲对象支持下列操作

  1.只使用OpenGL ES 函数创建帧缓冲区对象。

  2.使用EGL context创建多个FBO。

  3.创建离屏颜色、深度、模板渲染缓冲区和纹理,把它们绑定到帧缓冲区对象上。

  4.通过多种缓冲区共享颜色、深度、模板缓冲区内容。

  5.把纹理作为颜色、深度直接关联到帧缓冲区,避免使用拷贝操作。

  6.FBO与无效FBO之间的复制。

  Framebuffer and Renderbuffer Objects帧缓冲对象与渲染缓冲对象

  渲染缓冲区对象是应用程序分配的2D图像缓冲区。渲染缓冲区被用来存储颜色、深度或模板值,能作为颜色、深度或模板关联到一个帧缓冲区对象。渲染缓冲区和操作系统提供的离屏的绘制窗口pbuffer 有很多相似的地方。渲染缓冲区不能直接被GL 作为纹理使用。

  FBO是一个颜色,深度和模板纹理或渲染目标的集合。各种2D 图像能被关联到帧缓冲区对象的颜色点上。

  

  创建FBO与RBO

  

  

  使用渲染缓冲区对象

  

注意在使用glBindRenderbuffer 绑定缓冲区前,glGenRenderbuffers 不要求去分配渲染缓冲区对象名字。虽然调用glGenRenderbuffers 是一个好的习惯,那仍然有很多应用程序在编译时为它们的缓冲区指定常量。应用程序能指定一个不使用的渲染缓冲区对象名字去执行glBindRenderbuffer。我们建议使用glGenRenderbuffers 返回的名字替代应用程序自己指定缓冲区名字。

  一旦渲染缓冲区对象被绑定,我们能指定渲染缓冲区内的存储的图像的尺寸和格式

  

  使用FBO

  

  

  

  

时间: 2024-10-10 10:01:42

OpenGL ES 3.0之Fragment buffer objects(FBO)详解(二)的相关文章

OpenGL ES 3.0之Fragment buffer objects(FBO)详解(一)

片段操作图 这篇文章将介绍从写入帧缓冲和读取帧缓冲的方式. Buffers(缓冲) OpenGL ES支持三种缓冲: OpenGL ES •• Color buffer颜色缓冲 •• Depth buffer深度缓冲 •• Stencil buffer模板缓冲 创建缓冲区 OpenGL ES 是一个交互式的渲染系统,假设每帧的开始,你希望初始化所有缓冲区中数据的默认值.调用glClear 函数来清除缓冲区内容,参数mask 指定清除的缓冲区. 你可能不要求清除每一个缓冲区,不在同时清除它们.但如

OpenGL ES 3.0之VertexAttributes,Vertex Arrays,and Buffer Objects(九)

顶点数据,也称为顶点属性,指每一个顶点数据.指能被用来描述每个顶点的数据,或能被所有顶点使用的常量值.例如你想绘制一个具有颜色的立方体三角形.你指定一个恒定的值用于三角形的所有三个顶点颜色.但三角形的三个顶点位置是不同的,你需要指定一个顶点矩阵存储三个位置值. 指定顶点属性数据 顶点属性数据可以使用顶点数组或常量值指定每个顶点数据,OpenGL ES 3.0 必须至少支持16 个顶点属性.应用应该能够查询编译器支持的确切属性数.下面的程序指出如何查询. GLint maxVertexAttrib

OpenGL ES 2.0 渲染管线 学习笔记

图中展示整个OpenGL ES 2.0可编程管线 图中Vertex Shader和Fragment Shader 是可编程管线: Vertex Array/Buffer objects 顶点数据来源,这时渲染管线的顶点输入,通常使用 Buffer objects效率更好. Vertex Shader 顶点着色器通过矩阵变换位置.计算照明公式来生成逐顶点颜色已经生成或变换纹理坐标等基于顶点的操作. Primitive Assembly 图元装配经过着色器处理之后的顶点在图片装配阶段被装配为基本图元

Beginning OpenGL ES 2.0 with GLKit Part 1

Update 10/24/12: If you’d like a new version of this tutorial fully updated for iOS 6 and Xcode 4.5, check out iOS 5 by Tutorials Second Edition! Note from Ray: This is the fourth iOS 5 tutorial in the iOS 5 Feast! This tutorial is a free preview cha

《OpenGL ES 2.0 Programming Guide》第12章“最简单的ReadPixels并保存为BMP”示例代码【C语言版】

由于<OpenGL ES 2.0 Programming Guide>原书并没有提供第12章的示例代码,书上的代码也只提到关键的步骤,而网上大多是Android/iOS版本的示例,C/C++的大都基于OpenGL或OpenGL ES 3.0,为了加深理解,遂自己实现了一份C语言版本的,希望能够帮助到同样喜欢OpenGL ES 2.0的同学. 废话不多说,直接上代码 #include "stdafx.h" #include "esUtil.h" #incl

基于Cocos2d-x学习OpenGL ES 2.0系列——你的第一个三角形(1)

[本系列转自]http://cn.cocos2d-x.org/tutorial/lists?id=79 前言 在本系列教程中,我会以当下最流行的2D引擎Cocos2d-x为基础,介绍OpenGL ES 2.0的一些基本用法.本系列教程的宗旨是OpenGL扫盲,让大家在使用Cocos2d-x过程中,知其然,更知其所以然.本系列教程不会涉及非常底层的数学原理,同时也不会过多地提及OpenGL本身的一些细节知识.但是我会在每篇文章的最后给出一些参考链接,大家可以顺藤摸瓜,一举Get OpenGL这个新

Chapter 1 : OpenGLES 3.0 简介 (2)—— OpenGL ES 3.0

管道 如前所属,本书讲解的API版本是OpenGL ES 3.0.本书的目标是,深入讲解OpenGL ES 3.0的技术细节,给出具体的例子来说明如何使用某个特性,并且讨论了各种性能优化技术.当您读完这本书,您应该可以对OpenGL ES 3.0API有一个很好的把握.您将可以轻松的写出让人新服的OpenGL ES 3.0的应用程序,并且您不必通过阅读多种OpenGL ES的规范来搞懂某个特性是如何工作的. OpenGL ES 3.0实现了可编程着色图形管道.OpenGL ES 3.0规范包含两

OpenGL ES 2.0基本概念

1. OpenGL ES 2.0可编程管道 OpenGL负责把三维空间中的对象通过投影.光栅化转换为二维图像,然后呈现到屏幕上. 上图黄色部分(Vertex Shader和Fragment Shader)为此管道的可编程部分.整个管道包含以下两个规范: 1) OpenGL ES 2.0 API specification 2) OpenGL ES Shading Language Specification (OpenGL ES SL) 详细流程图如下: 此流程把三维数据变换为可以显示的二维数据

OpenGL ES 3.0之顶点缓冲

所谓顶点缓冲就是直接将顶点数据存储在gpu的一段缓冲区,不需要从cpu拷贝到gpu.提高了程序的运行效率. 操作步骤 1.创建顶点缓冲对象 GLuint vertexBufferID; 2.分配空间 glGenBuffers(1, &vertexBufferID); 3.绑定当前顶点缓冲对象 glBindBuffer(GL_ARRAY_BUFFER, vertexBufferID); 4.初始化缓冲区数据 glBufferData(GL_ARRAY_BUFFER, sizeof(vertices