OpenGL ES EGL eglDestroySurface

来源:https://www.cnblogs.com/shuopython/archive/2022/11/11/16879408.html
-Advertisement-
Play Games

目錄 一. EGL 前言 二. EGL 繪製流程簡介 三.eglDestroySurface 函數簡介 四.eglDestroySurface 使用 四.猜你喜歡 零基礎 OpenGL ES 學習路線推薦 : OpenGL ES 學習目錄 >> OpenGL ES 基礎 零基礎 OpenGL ES ...


目錄

零基礎 OpenGL ES 學習路線推薦 : OpenGL ES 學習目錄 >> OpenGL ES 基礎

零基礎 OpenGL ES 學習路線推薦 : OpenGL ES 學習目錄 >> OpenGL ES 特效

零基礎 OpenGL ES 學習路線推薦 : OpenGL ES 學習目錄 >> OpenGL ES 轉場

零基礎 OpenGL ES 學習路線推薦 : OpenGL ES 學習目錄 >> OpenGL ES 函數

零基礎 OpenGL ES 學習路線推薦 : OpenGL ES 學習目錄 >> OpenGL ES GPUImage 使用

零基礎 OpenGL ES 學習路線推薦 : OpenGL ES 學習目錄 >> OpenGL ES GLSL 編程

一. EGL 前言

EGLNativeDisplayType – 系統顯示類型,標識你所開發設備的物理屏幕,DX/OPenGL ES/Metal/Vulkan….

EGLNativeWindowType – 系統視窗,渲染顯示的視窗句柄

EGLDisplay – 關聯 EGLNativeDisplayType 系統物理屏幕的通用數據類型,是平臺上 WGL / GLX / AGL 的等價物

EGLSurface – 渲染區域,相當於 OpenGL ES 繪圖的畫布 (一塊記憶體空間),用戶想繪製的信息首先都要先繪製到 EGLSurface 上,然後通過 EGLDisplay 顯示

EGLConfig – 對 EGLSurface 的 EGL 配置,可以理解為繪製目標 framebuffer 的配置屬性

EGLContextOpenGL ES 圖形上下文

二. EGL 繪製流程簡介

  1. 獲取 EGL Display 對象:eglGetDisplay
  2. 初始化與 EGLDisplay 之間的連接:eglInitialize
  3. 獲取 EGLConfig 對象:eglChooseConfig / eglGetConfigs
  4. 創建 EGLContext 實例:eglCreateContext
  5. 創建 EGLSurface 實例:eglCreateWindowSurface / eglCreatePbufferSurface
  6. 連接 EGLContext 和 EGLSurface 上下文 eglMakeCurrent
  7. 使用 OpenGL ES API 繪製圖形:gl_*
  8. 切換 front buffer 和 back buffer 顯示:eglSwapBuffer
  9. 斷開並釋放與 EGLSurface 關聯的 EGLContext 對象:eglRelease
  10. 刪除 EGLSurface 對象 eglDestroySurface
  11. 刪除 EGLContext 對象 eglDestroyContext
  12. 終止與 EGLDisplay 之間的連接

三.eglDestroySurface 函數簡介

eglDestroySurface 用於銷毀渲染 EGLSurface(記憶體畫布),如果有其它線程使用這個 EGLSurface 時就要等到不使用時再銷毀,否則立即銷毀;

/*描述:用於銷毀渲染 EGLSurface
 *參數:
 *    display:指定顯示的連接
 *    context:EGLContext 上下文
 *
 *返回值:成功是返回 EGL_TRUE,失敗時返回 EGL_FALSE
 */

EGLAPI EGLBoolean eglDestroySurface(EGLDisplay display,
                                    EGLSurface surface);

可能返回錯誤:

EGL_FALSE is returned if destruction of the context fails, EGL_TRUE otherwise.

EGL_BAD_DISPLAY is generated if display is not an EGL display connection.

EGL_NOT_INITIALIZED is generated if display has not been initialized.

EGL_BAD_SURFACE is generated if surface is not an EGL surface.

類似 eglDestroyContext 摧毀上下文一樣 ,eglDestroySurface** 摧毀EGLSurface** 之前一定要記得通過 eglMakeCurrent 綁定當前上下文;

四.eglDestroySurface 使用

/******************************************************************************************/
//@Author:猿說編程
//@Blog(個人博客地址): www.codersrc.com
//@File:OpenGL ES EGL eglDestroySurface
//@Time:2022/08/04 07:30
//@Motto:不積跬步無以至千里,不積小流無以成江海,程式人生的精彩需要堅持不懈地積累!
/******************************************************************************************/

void egl_demo()
{
  EGLDisplay display = eglGetDisplay ( EGL_DEFAULT_DISPLAY );
    eglInitialize ( display , 0, 0);

  EGLConfig  config;
    eglChooseConfig ( display , attribs , & config , 1, & numConfigs );

  EGLSurface  surface = eglCreateWindowSurface ( display , config , ANativeWindow  , NULL );
  EGLContext  context = eglCreateContext ( display , config , NULL , NULL );
  eglMakeCurrent ( display , surface , surface , context )

  while(true){
    //opengl繪製
    glxx();

    eglSwapBuffers ( display , surface );
  }

  eglDestroyContext ( display , context );
  eglDestroySurface ( display , surface );
  eglTerminate ( display );
}

四.猜你喜歡

  1. OpenGL ES 簡介
  2. OpenGL ES 版本介紹
  3. OpenGL ES 2.0 和 3.0 區別
  4. OpenGL ES 名詞解釋(一)
  5. OpenGL ES 名詞解釋(二)
  6. OpenGL ES GLSL 著色器使用過程
  7. OpenGL ES EGL 簡介
  8. OpenGL ES EGL 名詞解釋
  9. OpenGL ES EGL eglGetDisplay
  10. OpenGL ES EGL eglInitialize
  11. OpenGL ES EGL eglGetConfigs
  12. OpenGL ES EGL eglChooseConfig
  13. OpenGL ES EGL eglGetError
  14. OpenGL ES EGL eglCreateContext
  15. OpenGL ES EGL eglCreateWindowSurface
  16. OpenGL ES EGL eglCreatePbufferSurface
  17. OpenGL ES EGL eglMakeCurrent
  18. OpenGL ES EGL eglSwapBuffer
  19. OpenGL ES EGL eglDestroySurface
  20. OpenGL ES EGL eglDestroyContext

本文由博客 - 猿說編程 猿說編程 發佈!


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 這一篇文章主要介紹python字元串相關知識。 單引號字元串及對單引號的轉義 **字元串(String)**就是一段文本,幾乎在所有的Python程式中都有字元串的身影。 字元串可以用單引號表示,也可以用雙引號表示,但是輸出一般為單引號: >>> 'Hello World!' 'Hello Worl ...
  • quarkus是如何支持虛擬線程的呢?今天咱們一起來閱讀quarkus源碼,學習從框架開發視角去添加新特性,除了開闊眼界,也為為自己的設計能力提升增加有效的參考信息 ...
  • 哈嘍兄弟們,本節咱們來複習一下用戶輸入和while迴圈。 函數input()的工作原理 函數input()讓程式暫停運行,等待用戶輸入一些文本。獲取用戶輸入後,python將其賦值給一個變數,以方便繼續使用。例如我們嘗試讓用戶輸入一些東西 a = input("請輸入一個數") print(a) 運 ...
  • 這一篇文章主要介紹函數、模塊、運行python文件等知識。 函數 函數猶如小程式,可以用來執行特定的操作。Python本身提供了很多函數,我們稱這些函數為內置函數。內置函數可以用於編寫數值表達式 >>> abs(-10) 10 >>> 2 // 3 # 整除總是向下取整 0 >>> round(2 ...
  • 註釋 給別人看的,機器並不會執行這行語句 1.單行註釋 // 我是單行註釋 2.多行註釋 /* 我是多行註釋 我是多行註釋 我是多行註釋 我是多行註釋 */ // 這是一個main函數,這個是go語言啟動的入口 func main() { //fmt.Println :列印一句話,然後執行完畢後,進 ...
  • JZ55 二叉樹的深度 描述 輸入一棵二叉樹,求該樹的深度。從根結點到葉結點依次經過的結點(含根、葉結點)形成樹的一條路徑,最長路徑的長度為樹的深度,根節點的深度視為 1 。 方法1 遞歸 思路: 最大深度是所有葉子節點的深度的最大值,深度是指樹的根節點到任一葉子節點路徑上節點的數量,因此從根節點每 ...
  • 我們常見的併發鎖ReentrantLock、CountDownLatch、Semaphore、CyclicBarrier都是基於AQS實現的,所以說不懂AQS實現原理的,就不能說瞭解Java鎖。 上篇文章講了AQS的加鎖流程,這篇文章再一塊看一下AQS具體源碼實現。 ...
  • 您好,我是湘王,這是我的博客園,歡迎您來,歡迎您再來~ 多數位農在開發的時候,要麼處理同步應用,要麼處理非同步。但是如果能學會使用CompletableFuture,就會具備一種神奇的能力:將同步變為非同步(有點像用了月光寶盒後同時穿梭在好幾個時空的感覺)。怎麼做呢?來看看代碼。 新增一個商店類Shop ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...