鍍金池/ 教程/ Android/ FrameBuffer
繪制線段 Line Segment
投影變換 Projection
繪制迷你太陽(yáng)系
繪制一個(gè)球體
繪制三角形 Triangle
OpenGL 光照模型
三維坐標(biāo)系及坐標(biāo)變換初步
定義 3D 模型的前面和后面
繪制一個(gè) 20 面體
顏色 Color
Depth Buffer
材質(zhì)及光照示例
基本幾何圖形定義
關(guān)于EGL
導(dǎo)言
Viewing 和 Modeling(MODELVIEW) 變換
FrameBuffer
設(shè)置光照效果 Set Lighting
Viewport 變換
階段小結(jié)
繪制點(diǎn) Point
OpenGL ES API 命名習(xí)慣
通用的矩陣變換指令
關(guān)于 OpenGL ES
創(chuàng)建實(shí)例應(yīng)用 OpenGLDemos 程序框架
OpenGL ES 管道(Pipeline)
GLSurfaceView

FrameBuffer

OpenGL ES 中的 FrameBuffer 指的是存儲(chǔ)像素的內(nèi)存空間。對(duì)應(yīng)一個(gè)二維圖像,如果屏幕分辨率為1280X1024 ,如果屏幕支持 24 位真彩色 (RGB),則存儲(chǔ)這個(gè)屏幕區(qū)域的內(nèi)存至少需要 1024X1280X3 個(gè)字節(jié)。此外如果需要支持透明度(Alpha),則一個(gè)像素需要 4 個(gè)字節(jié)。

對(duì)應(yīng) 3D 圖像來(lái)說(shuō),上面存儲(chǔ)顯示顏色的 Buffer 稱為 Color Buffer,除 Color Buffer 之外,還需要存儲(chǔ)每個(gè)像素和 View Point 之間的距離,OpenGL ES 中使用 Depth Buffer 存儲(chǔ)像素與眼睛(eye 或是 view point) 的距離,Depth Buffer 也可稱為 z Buffer.

此外 OpenGL ES 還定義了一個(gè)稱為遮罩(Stencil) Buffer,可以將屏幕顯示局限在某個(gè)由 Stencil Buffer 定義的區(qū)域,在日常生活中常見的 Stencil Buffer 示例時(shí)使用紙質(zhì)模板在墻上或是 T 桖上印刷文字或是圖像:

http://wiki.jikexueyuan.com/project/opengl-es-guide/images/91.png" alt="" />

在 OpenGL ES 允許配置 Color Buffer 中 R,G,B,A 的顏色位數(shù),Depth Buffer 的位數(shù),以及 Stencil Buffer的位數(shù):

參數(shù) 含義
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 時(shí),OpenGL ES 提供一些 Mask 函數(shù)可以控制 Color Buffer 中 RGBA 通道,是否允許寫入 Depth Buffer 等,這些 Mask 函數(shù)可以打開或是關(guān)閉某個(gè)通道,只有通道打開后,對(duì)應(yīng)的分量才會(huì)寫入指定 Buffer,比如你可以關(guān)閉紅色通道,這樣最后寫道 Color Buffer 中就不含有紅色。這些函數(shù)有 glColorMask, glDepthMask, glStencilMask。這些在后面有更詳細(xì)的介紹。

http://wiki.jikexueyuan.com/project/opengl-es-guide/images/92.png" alt="" />