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

399 篇文章 2 订阅
44 篇文章 7 订阅

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_BITSNumber of bits per pixel in the depth buffer
GL_STENCIL_BITSNumber 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。这些在后面有更详细的介绍。

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值