RenderScript 物件特性函式

總覽

以下函式可用於查詢 Allocation、Element 或 Sampler 物件的特性。這些物件是透過 Java 建立。您無法透過指令碼建立這些項目。

分配:

分配是向 RenderScript 核心傳送及接收資料的主要方法。

這些是結構化的儲存格集合,可用來儲存點陣圖、紋理、任意資料點等。

這個儲存格集合可能包含許多維度 (X、Y、Z、Array0、Array1、Array2、Array3)、臉孔 (適用於立方體),以及細節層級 (適用於 mipmapping)。

如要進一步瞭解如何建立配置,請參閱 android.renderscript.Allocation

元素:

在 RenderScript 中,「元素」一詞有點明確使用,做為配置儲存格的類型資訊以及該類型的例項化。例如:

  • rs_element 是類型規格的控制代碼,
  • rsGetElementAt() 的函式中,「元素」是指類型例項化,即配置的儲存格。

以下函式可讓您查詢類型規格的特性。

元素可以指定簡單的資料類型,如 C 所示,例如整數、浮點或布林值。也可以為 RenderScript 物件指定控制代碼。如需基本類型的清單,請參閱 rs_data_type

元素可以指定基本類型的固定大小向量 (大小為 2、3 或 4)。元素可分成複雜的元素,建立對等的 C 結構定義。

元素也可以擁有種類,這是用來解譯像素資料的語意資訊。請參閱「rs_data_Kind」。

建立常見元素的配置時,只要使用眾多預先定義的元素之一,例如 F32_2

如要建立複雜的元素,請使用 Element.Builder Java 類別。

取樣器:

取樣物件會定義分配方式,在核心中當做結構讀取。請參閱 android.renderscript.S

摘要

函式
rsAllocationGetDimFaces 出現多張臉孔
rsAllocationGetDimLOD 詳細程度
rsAllocationGetDimX X 維度的大小
rsAllocationGetDimY Y 維度的大小
rsAllocationGetDimZ Z 維度的大小
rsAllocationGetElement 取得描述配置儲存格的物件
rsClearObject 釋出物件
rsElementGetBytesSize 元素大小
rsElementGetDataKind 元素種類
rsElementGetDataType 元素的資料類型
rsElementGetSubElement 複雜元素的子元素
rsElementGetSubElementArraySize 複雜元素子元素的陣列大小
rsElementGetSubElementCount 子元素數量
rsElementGetSubElementName 子元素的名稱
rsElementGetSubElementNameLength 子元素名稱的長度
rsElementGetSubElementOffsetBytes 例項化子元素的偏移量
rsElementGetVectorSize 元素的向量大小
rsIsObject 檢查是否有空白帳號代碼
rsSamplerGetAnisotropy 取樣器的異質
rsSamplerGetMagnification 取樣器放大值
rsSamplerGetMinification 取樣器壓縮值
rsSamplerGetWrapS 取樣器包裝 S 值
rsSamplerGetWrapT 取樣器包裝 T 值
已淘汰的函式
rsGetAllocation 已淘汰。傳回特定指標的配置

函式

rsAllocationGetDimFaces :出現在多張臉孔

uint32_t rsAllocationGetDimFaces(rs_allocation a);
傳回
如果有多個臉孔,則傳回 1,否則傳回 0。

如果配置為立方體,如果有多個臉孔,此函式會傳回 1。在所有其他情況下,則會傳回 0。

使用 rsGetDimHasFaces() 取得目前執行中核心的維度。

rsAllocationGetDimLOD :詳細程度資訊

uint32_t rsAllocationGetDimLOD(rs_allocation a);
傳回
如有多個 LOD,則傳回 1,否則傳回 0。

查詢分配作業是否含有多個詳細層級。這對 mipmap 來說相當實用。

使用 rsGetDimLod() 取得目前執行中核心的維度。

rsAllocationGetDimX :X 維度的大小

uint32_t rsAllocationGetDimX(rs_allocation a);
傳回
分配的 X 維度。

傳回分配的 X 維度大小。

使用 rsGetDimX() 取得目前執行中核心的維度。

rsAllocationGetDimY :Y 維度的大小

uint32_t rsAllocationGetDimY(rs_allocation a);
傳回
分配的 Y 維度。

傳回分配的 Y 維度大小。如果分配的維度少於兩個,就會傳回 0。

使用 rsGetDimY() 取得目前執行中核心的維度。

rsAllocationGetDimZ :Z 維度大小

uint32_t rsAllocationGetDimZ(rs_allocation a);
傳回
分配的 Z 維度。

傳回分配的 Z 維度大小。如果分配的維度少於三個,就會傳回 0。

使用 rsGetDimZ() 取得目前執行中核心的維度。

rsAllocationGetElement :取得描述配置儲存格的物件

rs_element rsAllocationGetElement(rs_allocation a);
參數
a 鍵要取得資料的分配資源。
傳回
說明分配版面配置的元素。

取得 Element 物件,可說明配置中儲存格的類型、種類和其他特性。請參閱下方的 rsElement* 函式。

rsClearObject :釋出物件

void rsClearObject(rs_allocation* dst);
void rsClearObject(rs_element* dst);
void rsClearObject(rs_font* dst); 編譯 32 位元時已從 API 級別 23 以上移除
void rsClearObject(rs_mesh* dst); 編譯 32 位元時已從 API 級別 23 以上移除
void rsClearObject(rs_program_fragment* dst); 編譯 32 位元時已從 API 級別 23 以上移除
void rsClearObject(rs_program_raster* dst); 編譯 32 位元時已從 API 級別 23 以上移除
void rsClearObject(rs_program_store* dst); 編譯 32 位元時已從 API 級別 23 以上移除
void rsClearObject(rs_program_vertex* dst); 編譯 32 位元時已從 API 級別 23 以上移除
void rsClearObject(rs_sampler* dst);
void rsClearObject(rs_script* dst);
void rsClearObject(rs_type* dst);

告知執行時間,此控點將無法再用來存取相關物件。如果這是該物件的最後一個控制代碼,可能會復原資源。

呼叫此函式後,系統會將 *dst 設為空白的控制代碼。詳情請參閱 rsIsObject()。

rsElementGetBytesSize :元素大小

uint32_t rsElementGetBytesSize(rs_element e); 已在 API 級別 16 中新增。

傳回建立此元素例項時會佔用的大小 (以位元組為單位)。

rsElementGetDataKind :元素種類

rs_data_Kind rsElementGetDataKind(rs_element e); 已在 API 級別 16 中新增。

傳回元素的資料類型。以便解讀像素資料。

請參閱「rs_data_Kind」。

rsElementGetDataType :元素資料類型

rs_data_type rsElementGetDataType(rs_element e); 已在 API 級別 16 中新增。

傳回元素的基本資料類型。這可以是類似 C/C++ 的類型 (例如 RS_TYPE_UNSIGNED_8)、帳號代碼 (例如 RS_TYPE_ALLOCATION 和 RS_TYPE_ELEMENT),或是較為複雜的數字類型 (例如 RS_TYPE_UNSIGNED_5_6_5 和 RS_TYPE_MATRIX_4X4)。請參閱 rs_data_type

如果元素描述向量,此函式會傳回其項目的資料類型。使用 rsElementGetVectorSize 取得向量大小。

如果 元素描述一個結構,就會傳回 RS_TYPE_NONE。使用 rsElementGetSub* 函式探索這個複雜元素。

rsElementGetSubElement :複雜元素的子元素

rs_element rsElementGetSubElement(rs_element e, uint32_t 索引); 已在 API 級別 16 中新增。
參數
e 鍵要查詢的元素。
index要傳回的子元素索引。
傳回
指定索引處的子元素。

針對代表結構的元素,這個函式會傳回指定索引的子元素。

如果元素不是結構,或是索引大於或等於子元素數量,系統會傳回無效的控制代碼。

rsElementGetSubElementArraySize :複雜元素子元素的陣列大小

uint32_t rsElementGetSubElementArraySize(rs_element e, uint32_t 索引); 已在 API 級別 16 中新增。
參數
e 鍵要查詢的元素。
index子元素的索引。
傳回
子元素的陣列大小。

如果是複雜的元素,子元素可以採用靜態大小的陣列。這個函式會傳回索引上子元素的陣列大小。這個子元素重複與固定大小向量不同。

rsElementGetSubElementCount :子元素數量

uint32_t rsElementGetSubElementCount(rs_element e); 已在 API 級別 16 中新增。
參數
e 鍵要取得資料的元素。
傳回
子元素數量。

元素可以很簡單,例如 int 或浮點值,或是具有多個子元素的結構。這個函式會針對簡易元素傳回 0,以及複雜元素的子元素數量。

rsElementGetSubElementName :子元素名稱

uint32_t rsElementGetSubElementName(rs_element e, uint32_t 索引、char* name、uint32_t nameLength); 已在 API 級別 16 中新增。
參數
e 鍵要取得資料的元素。
index子元素的索引。
名稱要儲存名稱的陣列地址。
名稱長度所提供名稱陣列的長度。
傳回
已複製的字元數 (不含空值結束字元)。

如果是複雜的元素,這個函式會傳回指定索引的子元素名稱。

rsElementGetSubElementNameLength :子元素的名稱長度

uint32_t rsElementGetSubElementNameLength(rs_element e, uint32_t 索引); 已在 API 級別 16 中新增。
參數
e 鍵要取得資料的元素。
index子元素的索引。
傳回
子元素名稱 (含空值結束子) 的長度。

針對複雜的元素,此函式會傳回指定索引子元素名稱的長度。

rsElementGetSubElementOffsetBytes :執行個體化子元素的偏移量

uint32_t rsElementGetSubElementOffsetBytes(rs_element e, uint32_t 索引); 已在 API 級別 16 中新增。
參數
e 鍵要取得資料的元素。
index子元素的索引。
傳回
偏移 (以位元組為單位)。

這個函式會傳回元素例項化時,指定子元素例項的相對位置。

舉例來說,假設元素描述了 32 位元的浮點數,後面接著 32 位元整數,第一個位置的偏移值傳回值為 0,第二個為 4。

rsElementGetVectorSize :元素的向量大小

uint32_t rsElementGetVectorSize(rs_element e); 已在 API 級別 16 中新增。
參數
e 鍵要取得資料的元素。
傳回
元素向量的長度。

傳回 元素的向量大小。如果元素不是向量,則會傳回 1。

rsGetAllocation :傳回特定指標的分配作業

rs_allocation rsGetAllocation(const void* p);

已淘汰。此函式已淘汰,將於日後的 SDK 中移除。

傳回指定指標的配置。指標應指向有效的分配範圍。如果指標不是來自有效分配,系統就不會定義結果。

rsIsObject :檢查空白控制代碼

bool rsIsObject(rs_allocation v);
bool rsIsObject(rs_element v);
bool rsIsObject(rs_font v); 編譯 32 位元時已從 API 級別 23 以上移除
bool rsIsObject(rs_mesh v); 編譯 32 位元時已從 API 級別 23 以上移除
bool rsIsObject(rs_program_fragment v); 編譯 32 位元時已從 API 級別 23 以上移除
bool rsIsObject(rs_program_raster v); 編譯 32 位元時已從 API 級別 23 以上移除
bool rsIsObject(rs_program_store v); 編譯 32 位元時已從 API 級別 23 以上移除
bool rsIsObject(rs_program_vertex v); 編譯 32 位元時已從 API 級別 23 以上移除
bool rsIsObject(rs_sampler v);
bool rsIsObject(rs_script v);
bool rsIsObject(rs_type v);

如果控制代碼包含非空值的參照,則傳回 true。

這個函式不會驗證控制點中使用的內部指標指向實際有效的物件,只會檢查空值。

此函式可用於查看 rsElementGetSubElement() 傳回的元素,或檢查處理常式是否已呼叫 rsClearObject()。

rsSamplerGetAnisopy :取樣器的同質性

float rsSamplerGetAnisotropy(rs_sampler s); 已在 API 級別 16 中新增。

取得範例的異構物。

請參閱 android.renderscript.S

rsSamplerGetMagnification :取樣器放大值

rs_sampler_value rsSamplerGetMagnification(rs_sampler s); 已在 API 級別 16 中新增。

取得取樣器的放大值。

請參閱 android.renderscript.S

rsSamplerGetMinification :取樣器壓縮值

rs_sampler_value rsSamplerGetMinification(rs_sampler s); 已在 API 級別 16 中新增。

取得取樣器的壓縮值。

請參閱 android.renderscript.S

rsSamplerGetWrapS :Sampler 包裝 S 值

rs_sampler_value rsSamplerGetWrapS(rs_sampler s); 已在 API 級別 16 中新增。

取得範例的包裝 S 值。

請參閱 android.renderscript.S

rsSamplerGetWrapT :Sampler 包裝 T 值

rs_sampler_value rsSamplerGetWrapT(rs_sampler s); 已在 API 級別 16 中新增。

取得範例的包裝 T 值。

請參閱 android.renderscript.S