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

                                          Depth Buffer

                                          OpenGL ES 中 Depth Buffer 保存了像素與觀測點之間的距離信息,在繪制3D圖形時,將只繪制可見的面而不去繪制隱藏的面,這個過程叫”Hidden surface removal” ,采用的算法為”The depth buffer algorithm”。

                                          一般來說,填充的物體的順序和其順序是一致的,而要準確的顯示繪制物體在Z軸的前后關系,就需要先繪制距離觀測點(ViewPoint)最遠的物體,再繪制離觀測點較遠的物體,最后繪制離觀測點最近的物體,因此需要對應所繪制物體進行排序。OpenGL ES 中使用 Depth Buffer 存放需繪制物體的相對距離。

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

                                          The depth buffer algorithm 在 OpenGL ES 3D 繪制的過程中這個算法是自動被采用的,但是了解這個算法有助于理解 OpenGL ES 部分 API 的使用。

                                          這個算法的基本步驟如下:

                                          1. 將 Depth Buffer 中的值使用最大值清空整個 Depth Buffer,這個最大值缺省為1.0 ,為距離 viewPoint 最遠的裁剪的距離。最小值為 0,表示距離 viewPoint 最近的裁剪面的距離。距離大小為相對值而非實際距離,這個值越大表示與 Viewpoint 之間的距離越大。因此將初值這設為 1.0 相當于清空 Depth Buffer。
                                          2. 當 OpenGL 柵格化所繪制基本圖形(Primitive),將計算該 Primitive 與 viewpoint 之間的距離,保存在 Depth Buffer 中。
                                          3. 然后比較所要繪制的圖形的距離和當前 Depth Buffer 中的值,如果這個距離比 Depth Buffer 中的值小,表示這個物體離 viewPoint 較近,Open GL 則更像相應的 Color Buffer 并使用這個距離更新 Depth Buffer,否則,表示當前要繪制的圖形在已繪制的部分物體后面,則無需繪制該圖形(刪除)。

                                          這個過程也稱為”Depth Test” (深度測試)。

                                          下面給出了 OpenGL ES 中與 Depth Buffer 相關的幾個方法:

                                          • gl.Clear(GL10.GL_DEPTH_BUFFER_BIT) 清空 Depth Buffer (賦值為 1.0)通常清空 Depth Buffer 和 Color Buffer 同時進行。
                                          • gl.glClearDepthf(float depth) 指定清空 Depth Buffer 是使用的值,缺省為 1.0,通常無需改變這個值,
                                          • gl.glEnable(GL10.GL_DEPTH_TEST) 打開 depth Test
                                          • gl.glDisable(GL10.GL_DEPTH_TEST) 關閉 depth Test
                                          上一篇:繪制點 Point下一篇:繪制一個球體
                                          人妻精品动漫h无码中字