Opengl ES 3.0 on iOS -- EAGLContext

概述

EAGLContext對(duì)象是管理OpenGL ES渲染上下文,若想使用OpenGL ES 進(jìn)行繪制工作,則必須一個(gè)上下文對(duì)象.

API

初始化

- (nullable instancetype) initWithAPI:(EAGLRenderingAPI) api;
- (nullable instancetype) initWithAPI:(EAGLRenderingAPI) api sharegroup:(EAGLSharegroup*) sharegroup NS_DESIGNATED_INITIALIZER; 

參數(shù):

api 表示將要使用的OpenGL ES 版本. kEAGLRenderingAPIOpenGLES3 表示使用3.0

sharegroup 對(duì)象管理與一個(gè)或多個(gè)EAGLContext對(duì)象關(guān)聯(lián)的OpenGL ES資源,若不指定或值為NULL則創(chuàng)建新的對(duì)象,當(dāng)資源需要被共享時(shí)再使用它.

綁定上下文

+ (BOOL)setCurrentContext:(nullable EAGLContext*) context;

綁定一個(gè)全局的上下文對(duì)象. 注意: 1, 需要手動(dòng)對(duì)該對(duì)象強(qiáng)引用,否則將會(huì)被釋放. 2, 該對(duì)象線程不安全, 使用時(shí)應(yīng)防止同時(shí)從多個(gè)線程訪問(wèn)同一個(gè)上下文對(duì)象

分配渲染緩沖區(qū)

- (BOOL)renderbufferStorage:(NSUInteger)target fromDrawable:(nullable id<EAGLDrawable>)drawable;
通過(guò)調(diào)用此方法為緩沖區(qū)分配共享的存儲(chǔ)空間, 此方法是替代 原glRenderbufferStorage方法的.
參數(shù):

target :當(dāng)前綁定的渲染緩沖區(qū)的OpenGL ES綁定點(diǎn)。 此參數(shù)的值必須是GL_RENDERBUFFER(或OpenGL ES 1.1上下文中的GL_RENDERBUFFER_OES)

drawable :管理渲染緩沖區(qū)的數(shù)據(jù)存儲(chǔ)的對(duì)象。 在iOS中,此參數(shù)的值必須是CAEAGLLayer對(duì)象

顯示緩沖區(qū)內(nèi)容

- (BOOL)presentRenderbuffer:(NSUInteger)target;
將渲染緩沖區(qū)的內(nèi)容展示在屏幕上.
參數(shù):

target : 當(dāng)前綁定的渲染緩沖區(qū)的OpenGL ES綁定點(diǎn)。 此參數(shù)的值必須是GL_RENDERBUFFER(或OpenGL ES 1.1上下文中的GL_RENDERBUFFER_OES)。

在典型的顯示系統(tǒng)中,物理屏幕以固定的速率從幀緩沖區(qū)內(nèi)存中更新,若我們直接繪制帶幀緩沖區(qū),那么用戶在部分更新幀緩沖區(qū)時(shí)會(huì)看到偽像. 在OpenGL中采用雙緩沖區(qū), 分為 前緩沖區(qū) 和 后緩沖區(qū).

所有的渲染都發(fā)生在后臺(tái)緩沖區(qū),它位于不可見(jiàn)于屏幕的內(nèi)存區(qū)域,當(dāng)所有渲染完成時(shí),這個(gè)渲染將被 交換 到前臺(tái)緩沖區(qū)用于顯示, 然后原 前臺(tái)緩沖區(qū)就下一幀的后臺(tái)緩沖區(qū)

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容