FineKernelToolKit: FK::fk_FVecArray クラス

FineKernelToolKit 4.3.0

読み取り中…
検索中…
一致する文字列を見つけられません
公開メンバ関数 | 全メンバ一覧
FK::fk_FVecArray クラス

シェーダー内 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つの処理が必要です。

1. クラス内の各種設定やデータ格納を行っておく。
2. fk_Shape::setShaderAttribute(std::string, int, std::vector<float> *) を用いて シェーダー内の変数名を設定しておく。その際、第3引数の getP() を利用する。
3. fk_ShaderParameter::reserveAttribute() により、シェーダー内での変数名を設定する。
4. 格納データの変更があったら fk_Shape::modifyAttribute() を呼び出す。

\ sa fk_Vector, fk_HVector, fk_TexCoord, fk_Color, fk_Shape, fk_ShaderParameter

## 構築子と解体子

## ◆ fk_FVecArray() [1/2]

FK::fk_FVecArray::fk_FVecArray | ( | void |  | ) |

コンストラクタ

## ◆ ~fk_FVecArray()

FK::fk_FVecArray::~fk_FVecArray | ( |  | ) |

デストラクタ

## ◆ fk_FVecArray() [2/2]

FK::fk_FVecArray::fk_FVecArray | ( | const fk_FVecArray & |  | ) |

コピーコンストラクタ

## 関数詳解

## ◆ operator=()

fk_FVecArray & FK::fk_FVecArray::operator= | ( | const fk_FVecArray & |  | ) |

代入演算子

## ◆ setDim()

void FK::fk_FVecArray::setDim | ( | int | dim | ) |

次元設定関数

格納するベクトルデータの次元数を設定します。 次元は 2 から 4 まで設定が可能で、 シェーダープログラム内での型はそれぞれ vec2, vec3, vec4 となります。 デフォルトでの次元数は 3 に設定されています。

引数

  [in] | dim | 次元数

## ◆ getDim()

int FK::fk_FVecArray::getDim | ( | void |  | ) |

次元参照関数

現在設定されている次元数を参照します。

戻り値
  次元数

## ◆ resize()

void FK::fk_FVecArray::resize | ( | int | size | ) |

要素数設定関数

要素数を設定します。 格納される float 型実数の個数は、ここで指定した要素数と次元の積となります。

引数

  [in] | size | 要素数

参照
  getSize(), clear(), setDim()

## ◆ getSize()

int FK::fk_FVecArray::getSize | ( | void |  | ) |

要素数参照関数

現在設定されている要素数を返します。 格納されている float 型実数の個数は、この要素数と次元の積となります。

戻り値
  要素数

参照
  resize(), clear(), setDim()

## ◆ clear()

void FK::fk_FVecArray::clear | ( | void |  | ) |

データ消去関数

現在格納されている要素を全て破棄し、要素数を 0 にします。 この関数により次元は変更されません。

参照
  resize(), getSize(), setDim()

## ◆ push() [1/7]

void FK::fk_FVecArray::push | ( | const fk_Vector & | v | ) |

fk_Vector 型ベクトル追加関数

fk_Vector 型変数からデータを追加します。 なお、次元数が 2 だった場合は z 成分を破棄します。 また、次元数が 4 だった場合は、第 4 成分には 0 が設定されます。

引数

  [in] | v | 追加するベクトル

参照
  set(int, const fk_Vector &)

## ◆ push() [2/7]

void FK::fk_FVecArray::push | ( | const fk_FVector & | v | ) |

fk_FVector 型ベクトル追加関数

fk_FVector 型変数からデータを追加します。 なお、次元数が 2 だった場合は z 成分を破棄します。 また、次元数が 4 だった場合は、第 4 成分には 0 が設定されます。

引数

  [in] | v | 追加するベクトル

参照
  set(int, const fk_FVector &)

## ◆ push() [3/7]

void FK::fk_FVecArray::push | ( | const fk_HVector & | v | ) |

fk_HVector 型ベクトル追加関数

fk_HVector 型変数からデータを追加します。 なお、次元数が 2 だった場合は z,w 成分を、 次元数が 3 だった場合は w 成分を破棄します。

引数

  [in] | v | 追加するベクトル

参照
  set(int, const fk_HVector &)

## ◆ push() [4/7]

void FK::fk_FVecArray::push | ( | const fk_TexCoord & | v | ) |

fk_TexCoord 型ベクトル追加関数

fk_TexCoord 型変数からデータを追加します。 なお、次元数が 3,4 だった場合は、それぞれの成分に 0 が設定されます。

引数

  [in] | v | 追加するベクトル

参照
  set(int, const fk_TexCoord &)

## ◆ push() [5/7]

void FK::fk_FVecArray::push | ( | const fk_Color & | c | ) |

fk_Color 型色値追加関数

fk_Color 型変数からデータを追加します。 なお、次元数が 2 だった場合は b,a 成分を、 次元数が 3 だった場合は a 成分を破棄します。

引数

  [in] | c | 追加する色値

参照
  set(int, const fk_Color &)

## ◆ push() [6/7]

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成分

## ◆ push() [7/7]

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成分

## ◆ set() [1/11]

bool FK::fk_FVecArray::set | ( | int | id,
|  | const fk_Vector & | v )

fk_Vector 型ベクトル設定関数

fk_Vector 型変数のデータを設定します。 もし id が現在の要素数以上となっていた場合は、 内部で自動的に resize(id+1) が呼び出されます。

なお、次元数が 2 だった場合は z 成分を破棄します。 また、次元数が 4 だった場合は、第 4 成分には 0 が設定されます。

引数

  [in] | id | 要素 ID
  [in] | v | 追加するベクトル

参照
  push(const fk_Vector &)

## ◆ set() [2/11]

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 | 追加するベクトル

参照
  push(const fk_FVector &)

## ◆ set() [3/11]

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 | 追加するベクトル

参照
  push(const fk_HVector &)

## ◆ set() [4/11]

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 | 追加するベクトル

参照
  push(const fk_TexCoord &)

## ◆ set() [5/11]

bool FK::fk_FVecArray::set | ( | int | id,
|  | const fk_Color & | c )

fk_Color 型ベクトル設定関数

fk_Color 型変数のデータを設定します。 もし id が現在の要素数以上となっていた場合は、 内部で自動的に resize(id+1) が呼び出されます。

なお、次元数が 2 だった場合は b,a 成分を、 次元数が 3 だった場合は a 成分を破棄します。

引数

  [in] | id | 要素 ID
  [in] | c | 追加する色値

参照
  push(const fk_Color &)

## ◆ set() [6/11]

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成分

参照
  push(double, double)

## ◆ set() [7/11]

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成分

参照
  push(double, double, double)

## ◆ set() [8/11]

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成分

参照
  push(double, double, double, double)

## ◆ set() [9/11]

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成分

参照
  push(float, float)

## ◆ set() [10/11]

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成分

参照
  push(float, float, float)

## ◆ set() [11/11]

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成分

参照
  push(float, float, float, float)

## ◆ getV()

fk_Vector FK::fk_FVecArray::getV | ( | int | id | ) |

fk_Vector 型取得関数

fk_Vector 型で格納データを取得します。

引数

  [in] | id | 要素 ID

戻り値
  要素データ

参照
  set(int, const fk_Vector &)

## ◆ getF()

fk_FVector FK::fk_FVecArray::getF | ( | int | id | ) |

fk_FVector 型取得関数

fk_FVector 型で格納データを取得します。

引数

  [in] | id | 要素 ID

戻り値
  要素データ

参照
  set(int, const fk_FVector &)

## ◆ getHV()

fk_HVector FK::fk_FVecArray::getHV | ( | int | id | ) |

fk_HVector 型取得関数

fk_HVector 型で格納データを取得します。

引数

  [in] | id | 要素 ID

戻り値
  要素データ

参照
  set(int, const fk_HVector &)

## ◆ getT()

fk_TexCoord FK::fk_FVecArray::getT | ( | int | id | ) |

fk_TexCoord 型取得関数

fk_TexCoord 型で格納データを取得します。

引数

  [in] | id | 要素 ID

戻り値
  要素データ

参照
  set(int, const fk_TexCoord &)

## ◆ getC()

fk_Color FK::fk_FVecArray::getC | ( | int | id | ) |

fk_Color 型取得関数

fk_Color 型で格納データを取得します。

引数

  [in] | id | 要素 ID

戻り値
  要素データ

参照
  set(int, const fk_Color &)

## ◆ getP()

std::vector< float > * FK::fk_FVecArray::getP | ( | void |  | ) |

データアドレス取得関数

データ格納データのアドレスを取得します。 本関数は、 fk_Shape::setShaderAttribute(std::string, int, std::vector<float> *) の第3引数に入力することを想定しています。

戻り値
  アドレス

## ◆ isModify() [1/2]

bool FK::fk_FVecArray::isModify | ( | void |  | ) |

全体変更状態取得関数

以前に reset() が呼ばれてからのデータ変更有無を取得します。

戻り値
  変更があった場合 true を、なかった場合 false を返します。

参照
  isModify(int)

## ◆ isModify() [2/2]

bool FK::fk_FVecArray::isModify | ( | int | id | ) |

個別要素変更状態取得関数

以前に reset() が呼ばれてから、個別要素データ変更の有無を取得します。

引数

  [in] | id | 要素ID

戻り値
  変更があった場合 true を、なかった場合 false を返します。

参照
  isModify()

## ◆ reset()

void FK::fk_FVecArray::reset | ( | void |  | ) |

変更状態初期化関数

isModify(), isModify(int) による変更有無情報を初期化します。

参照
  isModify(), isModify(int)