總覽
以下函式可用於查詢 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 中新增。 |
取得範例的異構物。
rsSamplerGetMagnification :取樣器放大值
rs_sampler_value rsSamplerGetMagnification(rs_sampler s); | 已在 API 級別 16 中新增。 |
取得取樣器的放大值。
rsSamplerGetMinification :取樣器壓縮值
rs_sampler_value rsSamplerGetMinification(rs_sampler s); | 已在 API 級別 16 中新增。 |
取得取樣器的壓縮值。
rsSamplerGetWrapS :Sampler 包裝 S 值
rs_sampler_value rsSamplerGetWrapS(rs_sampler s); | 已在 API 級別 16 中新增。 |
取得範例的包裝 S 值。
rsSamplerGetWrapT :Sampler 包裝 T 值
rs_sampler_value rsSamplerGetWrapT(rs_sampler s); | 已在 API 級別 16 中新增。 |
取得範例的包裝 T 值。