Renderscript
Renderscript(渲染腳本)是Android操作系統上的一套API。它基於異構計算思想,專門用於密集型計算。Renderscript提供了三個基本工具:一個硬件無關的通用計算API;一個類似於CUDA、OpenCL和GLSL的計算API;和一個類C99的腳本語言。允許開發者以較少的代碼實現功能複雜且性能優越的應用程序。此外Renderscript還可以用於3D圖形計算。Android 4.2以後Renderscript添加了腳本內聯的功能,編碼時可以在腳本中直接調用Blend、Blur以及ScriptGroups等內置函數,而無須重新編寫它們的實現。
最近,Google在Android系統中添加另外一套名為Filterscript的API,允許開發者在標準Renderscript運行時API上使用Filterscript完成自己的圖像處理操作。不過考慮到腳本在多核CPU、GPU和DSP上的兼容性,使用時這個功能可能會受到很多嚴格的限制。Filterscript不是Renderscript的替代物而是它子集。Filterscript不適合用於精確度較高的數值計算,但其跨平台能力較強[1]。
特性
[編輯]- Renderscript始於Android 3.1系統,但通過引入Android Support Library,應用程序可以在不低於Android 2.2的系統上使用它[2]
- 包含了一個專門用於計算的API
- 使用基於C的腳本語言進行編碼
可移植性
[編輯]Renderscript的設計本意是將代碼運行各類Android操作系統上,而無須考慮實際硬件環境。因此它的目標在於可移植性,其次才是高性能。
性能
[編輯]Renderscript專為那些可以被高效分割且被能多個底層硬件並行執行的任務而設計。在Android 4.2以後的系統中,Renderscript不僅可以在CPU上運行,還被擴展到GPU上[3]。
易用性
[編輯]Renderscript極大地簡化了編碼流程,大部分的步驟是自動完成的,使用時只須編寫核心的業務代碼即可。
Renderscript和NDK的使用場景並不一樣,對於特定的問題,需要權衡這兩者的適用性。
歷史
[編輯]Android 4.1系統以後,Renderscipt中的實驗性3D渲染API已被廢棄,因此現在它只剩下作為一個用於密集計算的API。
引用
[編輯]- ^ Android 4.2 APIs. [2013-03-20]. (原始內容存檔於2013-08-26).
- ^ Accessing RenderScript APIs. [2014-08-19]. (原始內容存檔於2015-07-24).
- ^ Jelly Bean - Renderscipt Performance. [2012-11-27]. (原始內容存檔於2013-01-28).