我們非常高興的告訴大家最新版本的PowerVR SDK框架5.0和相關(guān)工具第二版本正式推出,這次更新包括很多激動人心的變化同時承諾讓每個PowerVR GPUs開發(fā)者的工作更加的簡單方便。這個版本同時涉及多個重大的改進,本篇文章將詳細向大家介紹。
之前4.x系列框架主要側(cè)重于在OpenGL ES和Vulkan之間提供統(tǒng)一的接口,充當跨平臺、跨API引擎解決方案的基礎(chǔ)。在之前的版本中已經(jīng)實現(xiàn)了這些功能并且這些版本會繼續(xù)向開發(fā)者提供。然而我們已經(jīng)看到了大家的反饋,因此我們需要作出一些重大改變?yōu)閺V大開發(fā)者提供更大的便利。
首先我們決定先回到最基礎(chǔ)的方面,Vulkan API完全是為了讓開發(fā)人員有更多的自主和控制權(quán),而我們之前的版本包含了對開發(fā)人員更多的手把手指導(dǎo),因此這很可能會阻礙Vulkan的開發(fā)。
第二我們感覺到在OpenGL ES上使用Vulkan不適合作為SDK,這也同時干擾了OpenGL ES SDK的功能定位——OpenGL ES API學(xué)習(xí)的輔助工具。
因此現(xiàn)在我們將一切交還到開發(fā)人員的手中,把所有的東西都去除掉只留下有用的實現(xiàn)和封裝庫。這也意味著它不會向后兼容,但是你會真正使用Vulkan在工作而不是在使用基于Vulkan的框架。
下面的介紹一下PowerVR SDK 5.0框架!
PowerVR SDK 5.0框架結(jié)構(gòu)圖
新框架包括三大部分——通用庫文件、Vulkan庫和OpenGL ES庫
? 通用庫文件是PVRShell、PVRCore和PVRAssets
- PVRCore是很多模塊的依賴,它提供很多底層支持代碼,這包括通用類型、數(shù)據(jù)流、日志記錄、引用計數(shù)等。
- PVRShell是一個獨立的抽象平臺,它是API的入口同時負責(zé)操作系統(tǒng)特定的窗口和輸入,包括最新版本中對Wayland的支持。
- PVRAssets包括的代碼用于處理資產(chǎn)比如紋理、模型等,它們會通過文件的方式加載。
? OpenGL ES庫包括PVRUtilsGles(涉及OpenGL ES具體功能的實現(xiàn)實例)和PVRCamera庫
? 全新的Vulkan庫包括PVRVk,它主要是Vulkan的SDK和簡單的封裝,同時還提供PVRUtilsVk,它包含Vulkan的具體使用幫助。
后面我們會具體介紹這些庫文件,但是首先我們需要了解一下之前PowerVR SDK框架4.x系列版本,這樣我們可以對作出的改變進行對比。
PowerVR框架5.0有哪些變化?
首先我們了解一下之前框架版本是如何設(shè)計的:
如上圖所示4.x版本系列的框架結(jié)構(gòu)與全新推出的5.0版本非常的不同,對于OpenGL和Vulkan并沒有進行區(qū)分,而且依賴項也更加的復(fù)雜。4.x系列版本的一些庫在5.0版本中進行了合并或者融合到5.0版本新的庫中。
? PVRShell與5.0版本的類似,但是它與其他模塊的耦合更加的緊密
? PVRCore和PVRAssets在4.x系列版本和5.0版本中基本是相同的,但是在5.0版本中從各方面進行了改進
? PVREnegineUtils根據(jù)PVRApi提供通用功能實現(xiàn)API抽象,在5.0版本中我們對OpenGL ES和Vulkan的實用工具分別進行了版本的調(diào)優(yōu)和優(yōu)化。
? PVRApi包括Vulkan和OpenGL ES API接口抽象資源,在5.0版本中這些抽象設(shè)置被取消了
? PVRNativeApi為底層API提供了實時綁定和實現(xiàn)的程序,在5.0版本中綁定只需要簡單的頭文件,所以不需要類似的工程文件。
? PVRCamera適用于OpenGL ES,并且提供iOS和安卓平臺硬件攝像頭驅(qū)動支持——在5.0版本中保持相同。
提升對Vulkan的支持
那么有哪些變化呢?現(xiàn)在這個框架更加專注于Vulkan并且變得更加的流暢,它提供了大量新的功能,幫助手冊等并且變得簡單。
PVRVk是一個獨立的C++ Vulkan封裝庫(沒有外部依賴),增加了智能指針支持、命名空間和強類型枚舉等。這些特性讓開發(fā)過程變得更加的容易,它是在4.x版本的PVRApi基礎(chǔ)上對于Vulkan部分進行了精簡和改進。
與4.x系列版本相比它具有更底層的功能抽象,并且已經(jīng)接近于像Vulkan HPP這樣的底層抽象,但是仍然也保留著PowerVR框架 讓開發(fā)盡可能的簡單的根本定位。現(xiàn)在大部分工作都是開發(fā)人員來負責(zé)實現(xiàn),像Vulkan API的使用具有更多的自主權(quán),但是在4.x系列版本中這些功能都是由框架來管理的。
談到這里那么PVRUtilsVk是一個新的模塊,它提供一些簡單通用任務(wù)的幫助手冊,不需要開發(fā)人員編寫事例代碼,包括的常用任務(wù)如下:
? 創(chuàng)建實例
? 創(chuàng)建設(shè)備
? 管理隊列
? 創(chuàng)建轉(zhuǎn)換鏈
? 以單行的形式管理接口
? 上傳紋理
PVRUtilsVk依賴于PVRVk、PVRCore和PVRAssets。
我們同時也向開發(fā)人員提供vulkan_IMG.h頭文件,它是對Khronos_vulkan.h文件的修改b版本,但是使用了強類型枚舉。我們同時也移除了全局命名空間原型,這樣做是為了盡可能減少全局命名空間的使用。
PVRVk具有自己的命名空間——pvrvk::而不是pvr::,它覆蓋了該框架的其余部分。
簡化后的框架設(shè)計
OpenGL ES框架已經(jīng)回到了它的教育定位,跨平臺的交叉API引用解決方案無疑會阻礙它的教育功能定位。這意味著PVRGles也不再存在,替代它的是OpenGL ES版本的PVRUtils(PVRUtilsGles)能提供所需要的一切,它提供的工具可以直接操作OpenGL ES而不是引用中間的抽象接口。
很多函數(shù)庫是動態(tài)加載的,而且都采用gl命名空間,DynamicEGL.h和DynamicGles.h頭文件是用于加載EGL和OpenGL ES函數(shù)指針的獨立頭文件,開發(fā)人員將學(xué)習(xí)并享受對功能的完全控制,在后面的開發(fā)過程中會使用原生的OpenGL ES代碼,比如gl::BindTexture()。
模塊簡化設(shè)計總結(jié)
一些部分已經(jīng)與其他模塊進行的合并或者完全移除,現(xiàn)在的依賴項減少了很多。PVRCore保持不變,但是一些通用的接口API進行了重新整理,比如IGraphicsContext、IPlatformContext等等。
PVRShell目前只依賴于PVRCore,它是一個獨立的平臺抽象層,前面提到過目前已經(jīng)支持Wayland。
PVRNativeAPI和EngineUtils已經(jīng)合并到PVRUtilsGles和PVRUtilsVk中,每一項都負責(zé)相應(yīng)的抽象接口,它們都依賴于PVRCore和PVRAssets。PVRUtilsVk,沒有意外的,也依賴于PVRVk,兩個庫文件都提供了初始化的幫助手冊,比如創(chuàng)建EGL/EAGL內(nèi)容(contexts)、著色器(shaders)、Vulkan轉(zhuǎn)換鏈等,此外還有一些功能比如紋理上傳等等。
PVRCamera與之前保持不變,僅支持OpenGL ES。
總結(jié)
正如大家所見我們對SDK框架做出了很多重大的改變,我們只有提供非常好的功能改進才能夠替換之前的4.x系列版本。如果你需要更多的信息,我們的框架參考文檔已經(jīng)更新。如果你需要進一步的幫助,不要忘記我們的技術(shù)支持論壇,我們的技術(shù)支持團隊隨時準備回答你的任何問題。我們希望大家喜歡這個全新推出的框架版本。
評論
查看更多