Android OpenGL ES 2.0 手把手教學(5)- 繪製模式

你們好,下面和大學一塊兒學習繪製模式,在個人github上有一個項目OpenGLES2.0SamplesForAndroid,我會不斷地編寫學習樣例,文章和代碼同步更新,歡迎關注,連接:github.com/kenneycode/…git

在咱們以前的例子中,咱們都是以三個獨立頂點爲一個三角形的方式來進行渲染,若是你們有注意觀察的話,會發現咱們在調用glDrawArrays()方法的時候,第一個參數都是用GL_TRIANGLES,這第一個參數就是用來設置繪製模式的,下面給你們介紹三個比較經常使用的繪製模式GL_TRIANGLESGL_TRIANGLE_STRIPGL_TRIANGLE_FAN,咱們先來看一張圖:github

這張圖展現了這三種繪製模式的區別性能

GL_TRIANGLES就是咱們以前的例子中一直在用的,它是將每三個獨立頂點構成一個三角形,不一樣三角形之間不會共用頂點學習

GL_TRIANGLE_STRIP的效果就像它名字同樣,是帶狀的,它構成三角的規則和頂點數量的奇偶有關,若是頂點數量是奇數,則三角形爲k, k+1, k+2, 若是頂點數量是偶數,則三角形爲k, k+2, k+1,這是什麼意思呢?咱們對照上圖來看,假如頂點數量是5,那麼就是(v0, v1, v2)、(v1, v2, v3)、(v2, v3, v4)三個三角形,假如頂點數量是4,那麼就是(v0, v2, v1)、(v1, v3, v2)兩個三角形,能夠看它三角形頂點是會共用的。code

GL_TRIANGLE_FAN的效果也像它名字同樣,一扇形的,以第0個點爲扇形的中心,其它點就鏈接0號點與上一個點構成三角形。cdn

這三種繪製模式各有特色,可根據實際須要來採用,在能知足需求的狀況下,儘可能採用傳遞頂點少的方式,能夠提升性能,例如咱們以前的例子中,是否能用GL_TRIANGLE_STRIP或者GL_TRIANGLE_FAN來替代,減小傳遞的頂點呢?你們能夠思考一下。blog

咱們來看看例子中的效果,從左到右依次是GL_TRIANGLESGL_TRIANGLE_STRIPGL_TRIANGLE_FAN,能夠經過按鈕切換:get

代碼在我github的OpenGLES2.0SamplesForAndroid項目中,本文對應的是SampleDrawMode,項目連接:github.com/kenneycode/…同步

感謝閱讀!it

相關文章
相關標籤/搜索