OpenGL基礎知識梳理——OpenGLES運行環境搭建流程

上一篇博客中已經完成了Windows上運行OpenGLES的簡單例程,現在分析下其調用流程。

1)EGL工作流程

      首先需要了解下調用EGL創建與原生窗口相關的OpenGLES運行環境流程,具體可參考https://blog.csdn.net/afei__/article/details/84867104;流程大致分爲如下幾步:

1)調用平臺相關函數創建原生窗口(EGL不負責這個),得到窗口句柄EGLNativeWindowType

2)調用eglGetDisplay()獲取與原生窗口相關的連接EGLDisplay

3)調用eglInitialize()初始化EGLDisplay

4)獲取可用的渲染表面配置,一般調用eglChooseConfig()

5)根據EGLDisplay、EGLNativeWindowType窗口句柄、配置,調用eglCreateWindowSurface()創建渲染表面EGLSurface

6)根據EGLDisplay、配置,調用eglCreateContext()創建GL上下文EGLContext

7)調用eglMakeCurrent()使用配置好的上下文

2)示例代碼調用流程

      紅寶書的例程代碼提供了一個開發框架用於加速OpenGLES開發,把上述調用EGL構造運行環境封裝爲一個函數esCreateWindow(),並且提供了不同平臺下與原生窗口操作相關(創建、顯示、消息處理等)的函數實現,使開發者更加專注於OpenGLES中的API調用。

      以Hello_Triangle工程爲例,Hello_Triangle.c中並沒有main函數,main函數存在於Common庫中的esUtil_win32.c中(對應於Android平臺就是esUtil_Android.c中)。main()中申請一個ESContext變量,並調用esMain()對該變量進行初始化,包括對UserData變量的初始化、調用esCreateWindow()搭建GL運行環境,構造渲染用到的shader和program,具體的繪製實現;同時把渲染函數、相應消息函數等賦值給ESContext對象的回調函數接口。這樣的話開發者可以更加着重於實現渲染相關的GLES的API調用,不用花費過多心思於構造平臺相關的GLES運行環境。

3)編譯android平臺上的APK

        紅寶書中還給出了在Windows中使用NDK將工程編譯爲手機上的APK運行的方法,自己實踐了下,流程如下。

1)下載JDK

https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html下載,我安裝的是64bit版本,安裝後將“安裝路徑\Java\jdk1.8.0_191\bin”加入系統路徑

2)安裝ADT

我是從https://www.androiddevtools.cn/下載的64bit版本,解壓後將“解壓路徑\sdk\tools”和“解壓路徑\sdk\platform-tools”加入系統路徑

3)安裝NDK

也是從https://www.androiddevtools.cn/下載的,我下載的r14b版本,解壓後將“解壓路徑”加入系統路徑

4)安裝Apache ant

https://ant.apache.org/bindownload.cgi下載,解壓後將“解壓路徑\bin”加入系統路徑

      至此需要的工具集已經安裝並配置完成(沒有安裝Cygwin),之後按照紅寶書中的說明,順利編譯生成了APK,在手機上正常運行。編譯操作如下圖所示,唯一不同的點是我安裝的ANDROID API版本爲20,因此把第一句命令中的18改爲了20.

 

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章