FineKernelToolKit 4.2.13
|
シェーダー内 attribute 変数用ベクトル管理クラス [詳解]
#include <FK/FVecArray.h>
公開メンバ関数 | |
fk_FVecArray (void) | |
コンストラクタ | |
~fk_FVecArray () | |
デストラクタ | |
fk_FVecArray & | operator= (const fk_FVecArray &) |
代入演算子 | |
fk_FVecArray (const fk_FVecArray &) | |
コピーコンストラクタ | |
void | setDim (int dim) |
次元設定関数 | |
int | getDim (void) |
次元参照関数 | |
void | resize (int size) |
要素数設定関数 | |
int | getSize (void) |
要素数参照関数 | |
void | clear (void) |
データ消去関数 | |
void | push (const fk_Vector &v) |
fk_Vector 型ベクトル追加関数 | |
void | push (const fk_FVector &v) |
fk_FVector 型ベクトル追加関数 | |
void | push (const fk_HVector &v) |
fk_HVector 型ベクトル追加関数 | |
void | push (const fk_TexCoord &v) |
fk_TexCoord 型ベクトル追加関数 | |
void | push (const fk_Color &c) |
fk_Color 型色値追加関数 | |
void | push (double x, double y, double z=0.0, double w=0.0) |
ベクトル追加関数1 | |
void | push (float x, float y, float z=0.0f, float w=0.0f) |
ベクトル追加関数2 | |
bool | set (int id, const fk_Vector &v) |
fk_Vector 型ベクトル設定関数 | |
bool | set (int id, const fk_FVector &v) |
fk_FVector 型ベクトル設定関数 | |
bool | set (int id, const fk_HVector &v) |
fk_HVector 型ベクトル設定関数 | |
bool | set (int id, const fk_TexCoord &v) |
fk_TexCoord 型ベクトル設定関数 | |
bool | set (int id, const fk_Color &c) |
fk_Color 型ベクトル設定関数 | |
bool | set (int id, double x, double y) |
2次元ベクトル設定関数1 | |
bool | set (int id, double x, double y, double z) |
3次元ベクトル設定関数1 | |
bool | set (int id, double x, double y, double z, double w) |
4次元ベクトル設定関数1 | |
bool | set (int id, float x, float y) |
2次元ベクトル設定関数2 | |
bool | set (int id, float x, float y, float z) |
3次元ベクトル設定関数2 | |
bool | set (int id, float x, float y, float z, float w) |
4次元ベクトル設定関数2 | |
fk_Vector | getV (int id) |
fk_Vector 型取得関数 | |
fk_FVector | getF (int id) |
fk_FVector 型取得関数 | |
fk_HVector | getHV (int id) |
fk_HVector 型取得関数 | |
fk_TexCoord | getT (int id) |
fk_TexCoord 型取得関数 | |
fk_Color | getC (int id) |
fk_Color 型取得関数 | |
std::vector< float > * | getP (void) |
データアドレス取得関数 | |
bool | isModify (void) |
全体変更状態取得関数 | |
bool | isModify (int id) |
個別要素変更状態取得関数 | |
void | reset (void) |
変更状態初期化関数 | |
シェーダー内 attribute 変数用ベクトル管理クラス
このクラスは、シェーダー内の attribute 変数として使用することを念頭においた、 ベクトルデータ格納用のクラスです。 このクラスは fk_Vector のような各種ベクトル演算は利用できませんが、 FK 内で作成した様々なベクトルデータを効率的に格納し、 シェーダー側に転送する機能を提供します。 なお、内部では全て float 型浮動小数点数として保存されます。
シェーダー内で attribute 変数として使用するには、大きく4つの処理が必要です。
\ sa fk_Vector, fk_HVector, fk_TexCoord, fk_Color, fk_Shape, fk_ShaderParameter
FK::fk_FVecArray::fk_FVecArray | ( | void | ) |
コンストラクタ
FK::fk_FVecArray::~fk_FVecArray | ( | ) |
デストラクタ
FK::fk_FVecArray::fk_FVecArray | ( | const fk_FVecArray & | ) |
コピーコンストラクタ
fk_FVecArray & FK::fk_FVecArray::operator= | ( | const fk_FVecArray & | ) |
代入演算子
void FK::fk_FVecArray::setDim | ( | int | dim | ) |
次元設定関数
格納するベクトルデータの次元数を設定します。 次元は 2 から 4 まで設定が可能で、 シェーダープログラム内での型はそれぞれ vec2, vec3, vec4 となります。 デフォルトでの次元数は 3 に設定されています。
[in] | dim | 次元数 |
int FK::fk_FVecArray::getDim | ( | void | ) |
次元参照関数
現在設定されている次元数を参照します。
void FK::fk_FVecArray::resize | ( | int | size | ) |
int FK::fk_FVecArray::getSize | ( | void | ) |
void FK::fk_FVecArray::clear | ( | void | ) |
void FK::fk_FVecArray::push | ( | const fk_Vector & | v | ) |
void FK::fk_FVecArray::push | ( | const fk_FVector & | v | ) |
fk_FVector 型ベクトル追加関数
fk_FVector 型変数からデータを追加します。 なお、次元数が 2 だった場合は z 成分を破棄します。 また、次元数が 4 だった場合は、第 4 成分には 0 が設定されます。
[in] | v | 追加するベクトル |
void FK::fk_FVecArray::push | ( | const fk_HVector & | v | ) |
fk_HVector 型ベクトル追加関数
fk_HVector 型変数からデータを追加します。 なお、次元数が 2 だった場合は z,w 成分を、 次元数が 3 だった場合は w 成分を破棄します。
[in] | v | 追加するベクトル |
void FK::fk_FVecArray::push | ( | const fk_TexCoord & | v | ) |
fk_TexCoord 型ベクトル追加関数
fk_TexCoord 型変数からデータを追加します。 なお、次元数が 3,4 だった場合は、それぞれの成分に 0 が設定されます。
[in] | v | 追加するベクトル |
void FK::fk_FVecArray::push | ( | const fk_Color & | c | ) |
void FK::fk_FVecArray::push | ( | double | x, |
double | y, | ||
double | z = 0.0 , |
||
double | w = 0.0 |
||
) |
ベクトル追加関数1
ベクトルを (x, y, z, w) の順番で追加します。 次元数が引数の個数より多かった場合は超過した成分を破棄します。 次元数が引数の個数より少なかった場合、指定されなかった成分には 0 が設定されます。 第3,4引数は省略可能です。
[in] | x | 第1成分 |
[in] | y | 第2成分 |
[in] | z | 第3成分 |
[in] | w | 第4成分 |
void FK::fk_FVecArray::push | ( | float | x, |
float | y, | ||
float | z = 0.0f , |
||
float | w = 0.0f |
||
) |
ベクトル追加関数2
ベクトルを (x, y, z, w) の順番で追加します。 次元数が引数の個数より多かった場合は超過した成分を破棄します。 次元数が引数の個数より少なかった場合、指定されなかった成分には 0 が設定されます。 第3,4引数は省略可能です。
[in] | x | 第1成分 |
[in] | y | 第2成分 |
[in] | z | 第3成分 |
[in] | w | 第4成分 |
bool FK::fk_FVecArray::set | ( | int | id, |
const fk_Vector & | v | ||
) |
bool FK::fk_FVecArray::set | ( | int | id, |
const fk_FVector & | v | ||
) |
fk_FVector 型ベクトル設定関数
fk_FVector 型変数のデータを設定します。 もし id が現在の要素数以上となっていた場合は、 内部で自動的に resize(id+1) が呼び出されます。
なお、次元数が 2 だった場合は z 成分を破棄します。 また、次元数が 4 だった場合は、第 4 成分には 0 が設定されます。
[in] | id | 要素 ID |
[in] | v | 追加するベクトル |
bool FK::fk_FVecArray::set | ( | int | id, |
const fk_HVector & | v | ||
) |
fk_HVector 型ベクトル設定関数
fk_HVector 型変数のデータを設定します。 もし id が現在の要素数以上となっていた場合は、 内部で自動的に resize(id+1) が呼び出されます。
なお、次元数が 2 だった場合は z,w 成分を、 次元数が 3 だった場合は w 成分を破棄します。
[in] | id | 要素 ID |
[in] | v | 追加するベクトル |
bool FK::fk_FVecArray::set | ( | int | id, |
const fk_TexCoord & | v | ||
) |
fk_TexCoord 型ベクトル設定関数
fk_TexCoord 型変数のデータを設定します。 もし id が現在の要素数以上となっていた場合は、 内部で自動的に resize(id+1) が呼び出されます。
なお、次元数が 3,4 だった場合は、それぞれの成分に 0 が設定されます。
[in] | id | 要素 ID |
[in] | v | 追加するベクトル |
bool FK::fk_FVecArray::set | ( | int | id, |
const fk_Color & | c | ||
) |
bool FK::fk_FVecArray::set | ( | int | id, |
double | x, | ||
double | y | ||
) |
2次元ベクトル設定関数1
ベクトルを (x, y) の順番で設定します。 もし id が現在の要素数以上となっていた場合は、 内部で自動的に resize(id+1) が呼び出されます。
次元数が引数の個数より多かった場合は超過した成分を破棄します。 次元数が引数の個数より少なかった場合、指定されなかった成分は変更しません。
[in] | id | 要素 ID |
[in] | x | 第1成分 |
[in] | y | 第2成分 |
bool FK::fk_FVecArray::set | ( | int | id, |
double | x, | ||
double | y, | ||
double | z | ||
) |
3次元ベクトル設定関数1
ベクトルを (x, y, z) の順番で設定します。 もし id が現在の要素数以上となっていた場合は、 内部で自動的に resize(id+1) が呼び出されます。
次元数が引数の個数より多かった場合は超過した成分を破棄します。 次元数が引数の個数より少なかった場合、指定されなかった成分は変更しません。
[in] | id | 要素 ID |
[in] | x | 第1成分 |
[in] | y | 第2成分 |
[in] | z | 第3成分 |
bool FK::fk_FVecArray::set | ( | int | id, |
double | x, | ||
double | y, | ||
double | z, | ||
double | w | ||
) |
4次元ベクトル設定関数1
ベクトルを (x, y, z, w) の順番で設定します。 もし id が現在の要素数以上となっていた場合は、 内部で自動的に resize(id+1) が呼び出されます。
次元数が引数の個数より多かった場合は超過した成分を破棄します。
[in] | id | 要素 ID |
[in] | x | 第1成分 |
[in] | y | 第2成分 |
[in] | z | 第3成分 |
[in] | w | 第4成分 |
bool FK::fk_FVecArray::set | ( | int | id, |
float | x, | ||
float | y | ||
) |
2次元ベクトル設定関数2
ベクトルを (x, y) の順番で設定します。 もし id が現在の要素数以上となっていた場合は、 内部で自動的に resize(id+1) が呼び出されます。
次元数が引数の個数より少なかった場合、指定されなかった成分は変更しません。
[in] | id | 要素 ID |
[in] | x | 第1成分 |
[in] | y | 第2成分 |
bool FK::fk_FVecArray::set | ( | int | id, |
float | x, | ||
float | y, | ||
float | z | ||
) |
3次元ベクトル設定関数2
ベクトルを (x, y, z) の順番で設定します。 もし id が現在の要素数以上となっていた場合は、 内部で自動的に resize(id+1) が呼び出されます。
次元数が引数の個数より多かった場合は超過した成分を破棄します。 次元数が引数の個数より少なかった場合、指定されなかった成分は変更しません。
[in] | id | 要素 ID |
[in] | x | 第1成分 |
[in] | y | 第2成分 |
[in] | z | 第3成分 |
bool FK::fk_FVecArray::set | ( | int | id, |
float | x, | ||
float | y, | ||
float | z, | ||
float | w | ||
) |
4次元ベクトル設定関数2
ベクトルを (x, y, z, w) の順番で設定します。 もし id が現在の要素数以上となっていた場合は、 内部で自動的に resize(id+1) が呼び出されます。
次元数が引数の個数より多かった場合は超過した成分を破棄します。
[in] | id | 要素 ID |
[in] | x | 第1成分 |
[in] | y | 第2成分 |
[in] | z | 第3成分 |
[in] | w | 第4成分 |
fk_Vector FK::fk_FVecArray::getV | ( | int | id | ) |
fk_FVector FK::fk_FVecArray::getF | ( | int | id | ) |
fk_HVector FK::fk_FVecArray::getHV | ( | int | id | ) |
fk_TexCoord FK::fk_FVecArray::getT | ( | int | id | ) |
fk_Color FK::fk_FVecArray::getC | ( | int | id | ) |
std::vector< float > * FK::fk_FVecArray::getP | ( | void | ) |
データアドレス取得関数
データ格納データのアドレスを取得します。 本関数は、 fk_Shape::setShaderAttribute(std::string, int, std::vector<float> *) の第3引数に入力することを想定しています。
bool FK::fk_FVecArray::isModify | ( | void | ) |
bool FK::fk_FVecArray::isModify | ( | int | id | ) |
個別要素変更状態取得関数
以前に reset() が呼ばれてから、個別要素データ変更の有無を取得します。
[in] | id | 要素ID |
void FK::fk_FVecArray::reset | ( | void | ) |