RenderScript オブジェクト特性関数

概要

以下の関数を使用して、Allocation、Element、または Sampler オブジェクトの特性をクエリできます。これらのオブジェクトは Java から作成されます。スクリプトから作成することはできません。

割り当て:

割り当ては、RenderScript カーネルとの間でデータを受け渡すために使用される主要な方法です。

ビットマップ、テクスチャ、任意のデータポイントなどを保存するために使用できるセルの構造化された集まりです。

このセルの集合には、多くの次元(X、Y、Z、Array0、Array1、Array2、Array3)、面(キューブマップ用)、詳細レベル(mipmap 用)があります。

割り当ての作成について詳しくは、android.renderscript.Allocation をご覧ください。

要素:

RenderScript では、「要素」という用語が、割り当てのセルの型情報とその型のインスタンス化の両方として、やや曖昧に使用されます。次に例を示します。

  • rs_element は型仕様へのハンドルです。
  • rsGetElementAt() のような関数では、「element」は型(割り当てのセル)のインスタンス化を意味します。

以下の関数を使用すると、型仕様の特性をクエリできます。

要素では、C にある単純なデータ型(整数、浮動小数点数、ブール値など)を指定できます。RenderScript オブジェクトに対するハンドルも指定できます。基本的な型のリストについては、rs_data_type をご覧ください。

要素では、基本型の固定サイズの(2、3、4 サイズの)ベクトル バージョンを指定できます。要素は複雑な要素にまとめることで、C 構造定義と同等のものを作成できます。

要素には kind を持つこともできます。kind は、ピクセルデータの解釈に使用されるセマンティック情報です。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 ディメンションのサイズを返します。割り当てのディメンションが 2 つ未満の場合は、0 を返します。

rsGetDimY() を使用して、現在実行中のカーネルのディメンションを取得します。

rsAllocationGetDimZ : Z ディメンションのサイズ

uint32_t rsAllocationGetDimZ(rs_allocation a);
戻り値
割り当ての Z ディメンション。

割り当ての Z ディメンションのサイズを返します。割り当てのディメンションが 3 つ未満の場合、0 を返します。

rsGetDimZ() を使用して、現在実行中のカーネルのディメンションを取得します。

rsAllocationGetElement : Allocation のセルを記述するオブジェクトを取得します

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 index); API レベル 16 で追加されました
パラメータ
eクエリ対象の要素。
index返されるサブ要素のインデックス。
戻り値
指定されたインデックスのサブ要素。

構造体を表す要素の場合、この関数は指定されたインデックスのサブ要素を返します。

要素が構造体でない場合や、インデックスがサブ要素の数以上である場合、無効なハンドルを返します。

rsElementGetSubElementArraySize : 複雑な要素のサブ要素の配列サイズ

uint32_t rsElementGetSubElementArraySize(rs_element e, uint32_t index); API レベル 16 で追加されました
パラメータ
eクエリ対象の要素。
indexサブ要素のインデックス。
戻り値
サブ要素の配列サイズ。

複合要素の場合、サブ要素を静的にサイズ設定される配列にできます。この関数は、インデックスにあるサブ要素の配列サイズを返します。このサブ要素の繰り返しは、固定サイズのベクトルとは異なります。

rsElementGetSubElementCount : 下位要素の数

uint32_t rsElementGetSubElementCount(rs_element e); API レベル 16 で追加されました
パラメータ
eデータの取得元の要素。
戻り値
サブ要素の数。

要素は、int や float などの単純なものでも、複数のサブ要素を持つ構造体でもかまいません。この関数は、単純な要素に対してはゼロを、複雑な要素に対してはサブ要素の数を返します。

rsElementGetSubElementName : 下位要素の名前

uint32_t rsElementGetSubElementName(rs_element e, uint32_t index, char* name, uint32_t nameLength); API レベル 16 で追加されました
パラメータ
eデータの取得元の要素。
indexサブ要素のインデックス。
name名前を保存する配列のアドレス。
nameLength指定された名前配列の長さ。
戻り値
コピーされた文字数(null 終端子を除く)。

複合要素の場合、この関数は指定されたインデックスのサブ要素の名前を返します。

rsElementGetSubElementNameLength : サブ要素の名前の長さ

uint32_t rsElementGetSubElementNameLength(rs_element e, uint32_t index); API レベル 16 で追加されました
パラメータ
eデータの取得元の要素。
indexサブ要素のインデックス。
戻り値
null 終端子を含むサブ要素名の長さ。

複合要素の場合、この関数は指定されたインデックスの下位要素の名前の長さを返します。

rsElementGetSubElementOffsetBytes : インスタンス化されたサブ要素のオフセット

uint32_t rsElementGetSubElementOffsetBytes(rs_element e, uint32_t index); API レベル 16 で追加されました
パラメータ
eデータの取得元の要素。
indexサブ要素のインデックス。
戻り値
バイト単位のオフセット。

この関数は、要素のインスタンス化内での指定されたサブ要素のインスタンス化の相対位置を返します。

たとえば、要素が 32 ビット浮動小数点数を記述し、その後に 32 ビット整数が続く場合、最初のオフセットの戻り値は 0、2 番目のオフセットの戻り値は 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);

ハンドルに null 以外の参照が含まれている場合に true を返します。

この関数は、ハンドルで使用される内部ポインタが実際の有効なオブジェクトを指していることを検証しません。null をチェックするだけです。

この関数を使用すると、rsElementGetSubElement() によって返された要素を確認したり、ハンドルで rsClearObject() が呼び出されたりしているかどうかを調べることができます。

rsSamplerGetAnisotropy : サンプラーの異方性

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 : サンプラーのラップ S 値

rs_sampler_value rsSamplerGetWrapS(rs_sampler s); API レベル 16 で追加されました

サンプラーのラップ S 値を取得します。

android.renderscript.S をご覧ください。

rsSamplerGetWrapT : サンプラーのラップの T 値

rs_sampler_value rsSamplerGetWrapT(rs_sampler s); API レベル 16 で追加されました

サンプラーのラップ T 値を取得します。

android.renderscript.S をご覧ください。