1. 程式人生 > >關於Android RenderScript 的詳細說明和一些實用文檔

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

本地 cuda end html 性能 說明 1年 archive action

http://www.cnblogs.com/TerryBlog/archive/2012/03/02/2377251.html

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 下也可以找到。

對應的文檔在下面:

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