關於Android RenderScript 的詳細說明和一些實用文檔


RenderScript 是一種低級的高性能編程語言,用於3D渲染和處理密集型計算(3D播放等和關於CPU密集型的計算)。一直以來Android 在繪圖性能的表現一直差強人意,引入NDK之后才有所改善,而在Honeycomb 中發布了RenderScript 這一殺手級在Framework 后,大大的增加了Android 本地語言的執行能力和計算能力。以下是參考一些網上總結的幾點:

編程語言和可移植性

RenderScript 采用了c99語法(標准C來自1999年,最新標准是C11,來自2011年),新的應用編程接口(API)最終編譯成原生代碼。這意味着做為Android 圖形開發者就不得不再系統的學習一套API,因為它的API並非人人都清楚,而Google 對於RenderScript  這方面的文檔又少之又少。

RenderScript 無法從其他C應用程序移植過來,不過它在Android 設備上比NDK 更常見。相比於NDK的可移植性要弱一些,記得以前移植過一個C程序叫Cadaver的webdav客戶端 就是使用的NDK,所以這點來說RenderScript 的移植性可以說有待改善。

 

 

 編譯和調試

RenderScript 在機器上進行第一遍編譯,然后在目標設備上進行最后一遍編譯(Just-In-Time Compiling),因而帶來更高效的原生二進制代碼。這也就是意味着,凡是支持RenderScript 的設備都可以運行你的代碼。不用管什么架構。

目前 ,RenderScript 帶來的代碼只能在主處理器上運行,它會自動生成可利用多個核心的代碼(如果設備上有多個核心)。就因此,編譯出來的程序是針對該機器的最佳優化,這解決了Device Fragmentation,也就是說開發者再也不必擔心使用者的手機、平板夠不夠好、有沒有GPU...等等問題,全都交給RenderScript 去擔心就好。沒有GPU,RenderScript 寫好的程序就交由CPU來處理(背后的編譯技術其實是使用的LLVM)。

 

 性能

RenderScript 有類似於CUDA的Compute API用於計算,配置和設置相對比較容易。最終的運行速度實際上要比勝過於NDK 的實現方式, 需要編寫的代碼比較少。而RenderScript 最適合用於做3D的用戶界面或高性能計算任務。而上面的編譯和調試所說的一樣,隨着最后一遍的編譯可以通過硬件直接或得性能的提升。

 

最后

引入RenderScript 並不是來代替NDK的,而是給開發者多一種選擇。 

 

如何學習?

關於官方的文檔 

http://developer.android.com/guide/topics/renderscript/index.html  這是官方RenderScript 的首頁

http://developer.android.com/guide/topics/renderscript/graphics.html   關於圖形方面的知識

http://developer.android.com/guide/topics/renderscript/compute.html  關於計算方面的知識

國外一個比較不錯的開發者的博客,目前只有兩篇: 

http://blog.iangclifton.com/2011/08/24/renderscript-101-part-1-renderscript-basics-tutorial/

http://blog.iangclifton.com/2011/08/24/renderscript-101-part-2-renderscript-interaction/

 

另外那些rs文件里面的函數如何尋找?

4.0的請到框架這里查找相應的頭文件:

frameworks/base/libs/rs/scriptc,這里包含以下的頭文件

 rs_allocation.rsh  rs_atomic.rsh  rs_cl.rsh  rs_core.rsh  rs_debug.rsh  rs_graphics.rsh  rs_math.rsh  rs_matrix.rsh  rs_object.rsh  rs_quaternion.rsh  rs_time.rsh  rs_types.rsh

或者在SDK的platform 下也可以找到。

對應的文檔在下面:

另外:

想學好RenderScript 必須先看一下關於圖形學方面的知識和熟悉OpenGL方面的知識,路遙遙呀。。。。 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM