顯示具有 RenderScript 標籤的文章。 顯示所有文章
顯示具有 RenderScript 標籤的文章。 顯示所有文章

2014年1月4日 星期六

Android Renderscript 平行運算實作

Android在Honeycomb(3.x,API等級11)版的時候正式導入了Renderscript,它是針對高性能3D渲染和運算的新框架。Renderscript設計有三個主要目標:(出處)
可移植性(Portability):應用程序代碼需要能夠在所有設備使用的那些完全不同的Android 硬體上執行。
性能(Performance):上述的可移植性的限制範圍內,追求更多的性能。
可用性(Usability):簡化開發人員開發程式過程。
簡單來講,RS不需要像NDK一樣的複雜就可以寫出擁有比Java還要好的性能程式。

RenderScript是Android系統上的一種腳本(Script)語言,也就是說撰寫程式時除了Java部分外,還要寫一個附檔名為 rs 的腳本。在編譯上,我們所熟知Java部分會透過Java Compiler編譯成ByteCode,然後透過Dex Compiler編譯成Dalvik可執行的dex檔,而rs檔則透過 llvm-rs-cc Compiler一方面編譯成bc檔案與前面所述之dex檔合併於apk檔;另一方面則產生java程式碼的結構中產生相對應的 object。



上述內容中所敘述的 llvm-rs-cc編譯器是基於LLVM編譯器,也因為採用了LLVM(Low Level Virtual Machine)編譯器的關係等於增加了異質多核心的平行運算功能。

因此,Google 在發佈Android 4.2的時候同時在Renderscript Computation中說明了支援GPU 運算的功能。(見Renderscript Computation說明)

一般RenderScript (以下簡稱RS) 大多是用來圖形處理,本文主要實作一個簡單的a+b的範例來完成Renderscript 平行運算。

2013年12月7日 星期六

[ Android JNI ] 使用NDK及RenderScript進行灰階轉換

1.建立新專案
2. 檔案結構

3. MainActivity.java
4. GrayComputeNDK.cpp
 5. Android.mk
6. Application.mk
7. mono.ms
 8.main.xml

9. 執行結果




2013年11月21日 星期四

[ RenderScript ] HelloCompute範例

1.開啟範例檔

2.選擇RenderScript -> HelloCompute
 3. 執行結果
 4.程式架構:在src目錄下除了java程式外,還有rs檔案,在編譯後會自動產生ScriptC_mono.java。

5. RenderScript原始程式,把RGBA轉換成灰階。
 6.JAVA程式列表