Android進階Renderscript---Andvanced Renderscript(一)

來源:互聯網
上載者:User

因為利用Renderscript的應用程式依然運行在Android虛擬機器(VM)內部,所以能夠訪問所有你熟悉的架構API,但也可在適當的時機利用Renderscript。為了促進Renderscript運行時和架構之間的相互作用,利用中介層代碼來幫。助兩個代碼層之間的通訊和記憶體管理。本文深入討論不同代碼層的更多細節,以及Android VM和Renderscript運行時之間是共用記憶體的。

Renderscript Runtime層

Renderscript 代碼被編譯,並且在一個簡潔而明確的Runtime層被執行。Renderscript運行時API提供了對密集計算的支援,它能夠方便而自動的擴充到可用處理器核心上。

注意:NDK中標準的C函數保證要運行在CPU上,所以Renderscript不能訪問這些類庫,因為Renderscript被設計成要運行在不同類型的處理器上。

Renderscript代碼要定義在Android工程src/目錄中的*.rs和*.rsh檔案中。通過llvm編譯器Renderscript代碼被編譯成中間位元組碼,llvm編譯器是作為Android編譯的一部分來啟動並執行。當應用程式在裝置上運行時,該位元組碼會通過駐留在裝置上的另一個llvm編譯器即時的編譯成機器碼。該機器碼會針對裝置進行最佳化並被緩衝,因此後續對該Renderscript的使用不需要重新編譯該位元組碼。

Renderscript運行時類庫包括以下一些關鍵的功能:

1. 記憶體配置請求的功能;

2. 帶有標量和向量類型的數學函數庫,該函數庫是許多共同常式的重載版本。如加法運算、乘法運算、點陣運算、叉積運算以及原子計算和比較函數等都是有效;

3. 未經處理資料和向量、矩陣、日期和時間的轉換;

4. 支援Renderscript系統的資料類型和結構,如針對向量類型所定義的二維、三維、四維向量;

5. 日誌函數。

反射層

反射層是一組由Android編譯工具產生的類,使用這些類允許從Android架構中訪問Renderscript運行時。該層還提供了一些方法和構造器,它們允許使用在Renderscript代碼中定義的指標所指向的記憶體來進行記憶體配置和相關工作。下面列出了一些主要的反射組件:

1. 你建立的每個.rs檔案都會產生一個ScriptC類型的名叫project_root/gen/package/name/ScriptC_renderscript_filename的類,這個檔案是你的.rs檔案的.java版,你能夠在Android架構中調用這個類。該類包含了從.rs檔案中反射來的以下項目:

    A. 非靜態函數;

    B.非靜態,全域的Renderscript變數。Android編譯工具會給每個變數產生訪問器方法,以便能夠在Android架構中讀寫這些Renderscript變數。如果一個全域變數在Renderscript運行時層被初始化,那麼那些初始化的值會被用於初始化Android架構層中對應的變數。如果全域變數被標記為const,那麼就不會產生set方法。

    C.全域指標www.2cto.com

一個被反射到自己類的名叫project_root/get/package/name/ScriptField_struct_name的struct,它繼承Script.FielBase類。這個代表了一個struct數組,它允許給這個struct的多個執行個體分配記憶體。

 


作者:FireOfStar

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.