Renderscript

Renderscript

Renderscript(彩現指令碼)是Android作業系統上的一套API。它基於異構計算思想,專門用於密集型計算。Renderscript提供了三個基本工具:一個硬件無關的通用計算API;一個類似於CUDAOpenCLGLSL的計算API;和一個類C99的手稿語言。允許開發者以較少的代碼實現功能複雜且效能優越的應用程式。此外Renderscript還可以用於3D圖形計算。Android 4.2以後Renderscript添加了指令碼行內的功能,編碼時可以在指令碼中直接呼叫BlendBlur以及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。

參照

編輯
  1. ^ Android 4.2 APIs. [2013-03-20]. (原始內容存檔於2013-08-26). 
  2. ^ Accessing RenderScript APIs. [2014-08-19]. (原始內容存檔於2015-07-24). 
  3. ^ Jelly Bean - Renderscipt Performance. [2012-11-27]. (原始內容存檔於2013-01-28).