目錄
創(chuàng)新互聯(lián)公司專注為客戶提供全方位的互聯(lián)網(wǎng)綜合服務(wù),包含不限于成都網(wǎng)站設(shè)計(jì)、網(wǎng)站制作、大方網(wǎng)絡(luò)推廣、微信平臺(tái)小程序開(kāi)發(fā)、大方網(wǎng)絡(luò)營(yíng)銷(xiāo)、大方企業(yè)策劃、大方品牌公關(guān)、搜索引擎seo、人物專訪、企業(yè)宣傳片、企業(yè)代運(yùn)營(yíng)等,從售前售中售后,我們都將竭誠(chéng)為您服務(wù),您的肯定,是我們最大的嘉獎(jiǎng);創(chuàng)新互聯(lián)公司為所有大學(xué)生創(chuàng)業(yè)者提供大方建站搭建服務(wù),24小時(shí)服務(wù)熱線:18980820575,官方網(wǎng)址:www.cdcxhl.com
零基礎(chǔ) OpenGL ES 學(xué)習(xí)路線推薦 : OpenGL ES 學(xué)習(xí)目錄 >> OpenGL ES 基礎(chǔ)
零基礎(chǔ) OpenGL ES 學(xué)習(xí)路線推薦 : OpenGL ES 學(xué)習(xí)目錄 >> OpenGL ES 特效
零基礎(chǔ) OpenGL ES 學(xué)習(xí)路線推薦 : OpenGL ES 學(xué)習(xí)目錄 >> OpenGL ES 轉(zhuǎn)場(chǎng)
零基礎(chǔ) OpenGL ES 學(xué)習(xí)路線推薦 : OpenGL ES 學(xué)習(xí)目錄 >> OpenGL ES 函數(shù)
零基礎(chǔ) OpenGL ES 學(xué)習(xí)路線推薦 : OpenGL ES 學(xué)習(xí)目錄 >> OpenGL ES GPUImage 使用
零基礎(chǔ) OpenGL ES 學(xué)習(xí)路線推薦 : OpenGL ES 學(xué)習(xí)目錄 >> OpenGL ES GLSL 編程
EGLNativeDisplayType – 系統(tǒng)顯示類型,標(biāo)識(shí)你所開(kāi)發(fā)設(shè)備的物理屏幕,DX/OPenGL ES/Metal/Vulkan….
EGLNativeWindowType – 系統(tǒng)窗口,渲染顯示的窗口句柄
EGLDisplay – 關(guān)聯(lián) EGLNativeDisplayType 系統(tǒng)物理屏幕的通用數(shù)據(jù)類型,是平臺(tái)上 WGL / GLX / AGL 的等價(jià)物
EGLSurface – 渲染區(qū)域,相當(dāng)于 OpenGL ES 繪圖的畫(huà)布 (一塊內(nèi)存空間),用戶想繪制的信息首先都要先繪制到 EGLSurface 上,然后通過(guò) EGLDisplay 顯示
EGLConfig – 對(duì) EGLSurface 的 EGL 配置,可以理解為繪制目標(biāo) framebuffer 的配置屬性
EGLContext – OpenGL ES 圖形上下文
前面有介紹:
EGLDisplay – 關(guān)聯(lián) EGLNativeDisplayType 系統(tǒng)物理屏幕的通用數(shù)據(jù)類型,是平臺(tái)上 WGL / GLX / AGL 的等價(jià)物
EGLSurface – 渲染區(qū)域,相當(dāng)于 OpenGL ES 繪圖的畫(huà)布 (一塊內(nèi)存空間),用戶想繪制的信息首先都要先繪制到 EGLSurface 上,然后通過(guò) EGLDisplay 顯示
EGLSurface 作為內(nèi)存中的畫(huà)布(不可見(jiàn)),EGLDisplay 作為顯示器輸出顯示(可見(jiàn))**,而 eglSwapBuffer 作用就是把內(nèi)存 EGLSurface** **中畫(huà)布中的數(shù)據(jù)交換到 EGLDisplay ,輸出到屏幕顯示繪制的內(nèi)容**
/*描述:把內(nèi)存 EGLSurface 中畫(huà)布中的數(shù)據(jù)交換到 EGLDisplay ,輸出到屏幕顯示繪制的內(nèi)容
*參數(shù):
* display:指定顯示的連接
* surface:EGL 繪圖表面
*
*返回值:成功是返回 EGL_TRUE,失敗時(shí)返回 EGL_FALSE
*/
EGLBoolean eglSwapBuffers(EGLDisplay display,
EGLSurface surface);
某些情況下,我們想創(chuàng)建、使用多個(gè) EGLContext ,對(duì)于這種情況,需要注意以下幾個(gè)情況:
EGLContext
。EGLContext
上。EGLContext
上,取決于使用的 GPU 的具體實(shí)現(xiàn),可能成功,也可能失敗。共享 EGLContext 這種方式在加載階段很有用。由于上傳數(shù)據(jù)到 GPU(尤其是紋理數(shù)據(jù)(textures))這類操作很重,如果想要維持幀率穩(wěn)定,應(yīng)該在另一個(gè)線程進(jìn)行上傳。
然而,對(duì)于上面多個(gè) EGLContext 的 3 種情況的限制,必須在第一個(gè) EGLContext 之外,創(chuàng)建第二個(gè) EGLContext ,這個(gè) EGLContext 將使用第一個(gè) EGLContext 使用的內(nèi)部狀態(tài)信息。這兩個(gè) Context 即共享 Context 上下文。
需要注意的是:這**兩個(gè) EGLContext 共享的只是內(nèi)部狀態(tài)信息,它們兩個(gè)并不共享調(diào)用緩存(每個(gè) EGLContext** 各自擁有一個(gè)調(diào)用緩存)。
創(chuàng)建第二個(gè) EGLContext 的方法:
/*描述:創(chuàng)建 OpenGL ES 上下文 EGLContext
*參數(shù):
* display:指定顯示的連接
* config:配置 EGLConfig
* share_context:允許其它 EGLContext 共享數(shù)據(jù),使用 EGL_NO_CONTEXT 表示不共享
* attribList:指定操作的屬性列表,只能接受一個(gè)屬性 EGL_CONTEXT_CLIENT_VERSION(設(shè)置 OpenGL ES 版本)
*
*返回值:成功時(shí)返回新創(chuàng)建的 EGLContext,失敗時(shí)返回 EGL_NO_CONTEXT
*/
EGLContext eglCreateContext(
EGLDisplay display,
EGLConfig config,
EGLContext share_context,
EGLint const * attrib_list);
注意:第三個(gè)參數(shù)
share_context
是最重要的,它就是第一個(gè) Context ,表示共享上下文
在第二個(gè)線程,不進(jìn)行任何的繪制,只進(jìn)行上傳數(shù)據(jù)到 GPU 的操作。所以,給第二個(gè) Context 的 Surface 應(yīng)該是一個(gè)像素緩沖 (pixel buffer) Surface。
/******************************************************************************************/
//@Author:猿說(shuō)編程
//@Blog(個(gè)人博客地址): www.codersrc.com
//@File:OpenGL ES EGL eglCreatePbufferSurface
//@Time:2022/08/04 07:30
//@Motto:不積跬步無(wú)以至千里,不積小流無(wú)以成江海,程序人生的精彩需要堅(jiān)持不懈地積累!
/******************************************************************************************/
EGLSurface eglCreatePbufferSurface(
EGLDisplay display,
EGLConfig config,
EGLint const * attrib_list);
本文由博客 - 猿說(shuō)編程 猿說(shuō)編程 發(fā)布!