OpenGL ES基本流程總結

2021-10-08 13:52:17 字數 1633 閱讀 7416

作為乙個學習總結,繪製了opengl es中完成一次渲染所需要的一些基本步驟。

此處是以離屏渲染為例,離屏渲染是不直接上屏的,而是渲染到緩衝區中,那麼這塊緩衝區就需要我們手動建立,也就是上圖所示的framebuffer。其中需要三個部分來儲存資料,分別是color_attachment, depth_attachmen 和 stencil_attachment。其中color部分就用普通的texture即可。depth 和 stencil 部分應該用renderbuffer來實現,另外也有用繫結texture來實現的,好像執行效率有所不同,二者的區別有待研究。

如果需要抗鋸齒 msaa,還需要看平台是否支援以下擴充套件,常用倍數 2倍,4倍,8倍:

#ifndef gl_img_multisampled_render_to_texture

#define gl_img_multisampled_render_to_texture 1

#define gl_renderbuffer_samples_img 0x9133

#define gl_framebuffer_incomplete_multisample_img 0x9134

#define gl_max_samples_img 0x9135

#define gl_texture_samples_img 0x9136

typedef

void

(gl_apientryp pfnglrenderbufferstoragemultisampleimgproc)

(glenum target, glsizei samples, glenum internalformat, glsizei width, glsizei height)

;typedef

void

(gl_apientryp pfnglframebuffertexture2dmultisampleimgproc)

(glenum target, glenum attachment, glenum textarget, gluint texture, glint level, glsizei samples)

;

在建立texture的時候,需要指定一些引數,這些可以決定貼圖最終呈現的效果,有必要了解一下。

warp_s, warp_t 是指貼圖水平方向和垂直方向的影象填充方式。(s,t) 相當於 (u,v) 或者說 (x,y)。

各種效果展示如下:

比較特殊的是gl_clamp_to_border,這時候會用到邊框顏色,需要預先進行設定:

float bordercolor=

;gltexparameterfv

(gl_texture_2d, gl_texture_border_color, bordercolor)

;

這部分不複雜,稍微注意一下,在編譯 shader 和 program 後,最好檢查下編譯或者鏈結狀態。

OpenGl ES 使用流程

opengl es 2.0 graphics pipeline 渲染管線流程 vertex arrays buffer object 頂點資料 vertex shader 頂點shader primitive assembly 圖元裝配 rasterization 光柵化 fragment shad...

openGL ES 2 0開發流程

一 新增必須的framework 框架 opengles.frameworks和quartzcore.framework 二 修改openglview.h 引入opengl的header,建立一些後面會用到的例項變數 caeagllayer eagllayer eaglcontext context...

opengles基本變換的實質

我們在三維座標系中對物體進行旋轉,縮放,平移,從表面上看是直接針對物體的,但實際上並不是,這些變換是針對座標系的,opengles中 變換的實現機制可以理解為首先通過矩陣對座標系進行變換,然後根據傳入渲染管線的原始頂點座標在最終變換結果座標系中的位置來進行繪製,見下圖加深理解 變換過程 1,左側的原...