`

Android OpenGL ES 开发教程(23):FrameBuffer

 
阅读更多

OpenGL ES 中的FrameBuffer 指的是存储像素的内存空间。对应一个二维图像,如果屏幕分辨率为1280X1024 ,如果屏幕支持24位真彩色 (RGB),则存储这个屏幕区域的内存至少需要1024X1280X3个字节。此外如果需要支持透明度(Alpha),则一个像素需要4个字节。

对应3D图像来说,上面存储显示颜色的Buffer称为Color Buffer,除Color Buffer之外,还需要存储每个像素和View Point之间的距离,OpenGL ES中使用Depth Buffer 存储像素与眼睛(eye 或是view point)的距离,Depth Buffer也可称为z Buffer.

此外 OpenGL ES 还定义了一个称为遮罩(Stencil) Buffer,可以将屏幕显示局限在某个由Stencil Buffer 定义的区域,在日常生活中常见的Stencil Buffer 示例时使用纸质模板在墙上或是T桖上印刷文字或是图像:

在OpenGL ES 允许配置Color Buffer 中 R,G,B,A 的颜色位数,Depth Buffer 的位数,以及Stencil Buffer的位数:

参数 含义
GL_RED_BITS, GL_GREEN_BITS,
GL_BLUE_BITS, GL_ALPHA_BITS
Number of bits per R, G, B, or A component in the color buffers
GL_DEPTH_BITS Number of bits per pixel in the depth buffer
GL_STENCIL_BITS Number of bits per pixel in the stencil buffer

在最终OpenGL ES写入这些Buffer时,OpenGL ES提供一些Mask 函数可以控制Color Buffer 中RGBA通道,是否允许写入Depth Buffer 等,这些Mask 函数可以打开或是关闭某个通道,只有通道打开后,对应的分量才会写入指定Buffer,比如你可以关闭红色通道,这样最后写道Color Buffer中就不含有红色。这些函数有 glColorMask, glDepthMask, glStencilMask。这些在后面有更详细的介绍。

分享到:
评论

相关推荐

    Android OpenGL ES 简明开发教程

    ### Android OpenGL ES 开发教程详解 #### 概述与历史沿革 OpenGL ES(OpenGL for Embedded Systems)作为OpenGL API的子集,专为移动设备、PDA和游戏主机等嵌入式系统设计,旨在简化3D图形应用的开发流程。自2003...

    OpenGLES demo - 13. Framebuffer FBO

    在OpenGLES中,Framebuffer Object(FBO)是渲染到纹理或者离屏渲染的重要工具,它允许我们将渲染的结果存储在纹理中,以便后续处理或显示。本教程将深入讲解FBO的基本概念、创建过程以及其在iOS开发中的应用。 1. ...

    android opengles2.0 jni

    在Android应用开发中,结合OpenGL ES 2.0和JNI,开发者可以实现更复杂、性能更强的图形特效,例如“水波纹效果”。 在Android中,OpenGL ES 2.0相比于1.0版本引入了着色器语言(GLSL),这使得开发者可以直接编写...

    Android_OpenGL_ES_简明开发教程

    这个简明开发教程主要参考了Jayway Team Blog中关于OpenGL ES开发的教程,该教程比较通俗易懂,非常适合OpenGL ES的初学者。教程主要通过示例和步骤讲解,旨在帮助没有3D开发经验的程序员快速入门。并且,由于很多...

    OPENGL ES 3.0编程指南

    它通常与OpenGL ES不直接交互,但在构建例如3D地理信息系统或可视化应用时,可能会利用Elasticsearch来检索和组织数据,然后通过OpenGL ES进行呈现。 总的来说,OpenGL ES 3.0编程指南涵盖了移动和嵌入式设备图形...

    Android_OpenGL_ES_分析与实践

    ### Android_OpenGL_ES 分析与实践 #### 一、OpenGLES概述 OpenGLES(OpenGL for Embedded Systems)是OpenGL的一个子集,专为手持设备和嵌入式系统设计的3D图形API。该API由Khronos Group维护,旨在为资源受限的...

    android opengl es 2.0官方demo

    在Android平台上,OpenGL ES 2.0是一个重要的图形库,它提供了丰富的图形渲染功能,包括顶点、着色器、纹理映射等,广泛应用于游戏开发、图像处理和增强现实应用。 在"android opengl es 2.0官方demo"中,我们可以...

    android 下读取framebuffer的内容

    在Android系统中,framebuffer(帧缓冲区)是操作系统用于存储屏幕显示内容的数据结构。它是一个内存区域,包含了屏幕上每一个像素的颜色值。当系统需要更新屏幕时,会将图像数据写入framebuffer,然后由显卡将其...

    Android4.0下使用framebuffer抓屏并保存成bmp文件

    在Android系统中,framebuffer(帧缓冲)是操作系统用于存储屏幕图像数据的内存区域,它直接与硬件交互,负责将像素数据渲染到屏幕上。在Android 4.0(Ice Cream Sandwich)版本中,开发者可以通过访问framebuffer来...

    OpenGLES2教程 Android&iOS;工程

    在Android和iOS的OpenGLES2编程中,我们都需要处理纹理加载、顶点数组、帧缓冲对象(framebuffer objects, FBOs)和深度缓冲等基本元素。纹理加载涉及到读取图片文件并转化为OpenGL纹理,顶点数组用于存储几何信息,...

    OPENGL ES 3.0编程指南.pdf

    OpenGL ES 3.0编程指南是面向初学者的优秀教程,旨在帮助读者深入理解并掌握OpenGL ES 3.0这一移动设备和...通过深入学习此教程,读者可以掌握OpenGL ES 3.0的核心概念和技术,为开发高质量的3D图形应用打下坚实基础。

    Android OpenGL的一个简单的例子.zip

    1. **Activity**:Android应用程序的基本单元,通常包含一个`GLSurfaceView`,这是专门用于显示OpenGL ES图形的视图组件。`GLSurfaceView`管理一个线程来处理图形渲染,并提供了回调方法,如`onDrawFrame()`,在这个...

    android framebuffer 测试程序

    在Android系统中,Framebuffer是操作系统与硬件图形处理器(GPU)之间的一个接口,它负责将操作系统和应用程序的图形输出渲染到屏幕。Framebuffer测试程序是用于验证和调试这一关键组件的工具,尤其是在开发或优化...

    Andoird OpenGL ES 入门程序

    本文将深入探讨Android环境下使用OpenGL ES进行3D开发的基础知识。 首先,让我们了解Android中的OpenGL ES环境设置。在Android项目中,你需要包含`<uses-feature android:glEsVersion="0x00020000" android:...

    IPhone openGL ES教程

    ### IPhone OpenGL ES 教程知识点详述 #### 一、OpenGL ES 概述与应用场景 OpenGL ES(OpenGL for Embedded Systems)是一种专为移动设备设计的图形库,它基于OpenGL标准,但针对嵌入式系统进行了优化。由于其轻量...

    OpenGL ES 3.0 Programming Guide, 2nd Edition

    All code has been built and tested on iOS 7, Android 4.3, Windows (OpenGL ES 3.0 Emulation), and Ubuntu Linux, and the authors demonstrate how to build OpenGL ES code for each platform. Coverage ...

    OpenGLES_ProgrammingGuide

    OpenGLES的核心特性之一是其始终将Framebuffer对象作为渲染目标,这意味着所有的图形输出都将被发送到Framebuffer对象,无论是在屏幕上还是离屏渲染。此外,由于不同设备的硬件配置差异,OpenGLES在不同设备上的功能...

Global site tag (gtag.js) - Google Analytics