FineKernelToolKit 2.9.0

- メインページ
- ネームスペース
- クラス
- ファイル

- 構成
- クラス階層
- 構成メンバ

全て クラス ネームスペース ファイル 関数 変数 型定義 列挙型 列挙型の値 フレンド マクロ定義 ページ
Public メソッド | Protected メソッド | すべてのメンバ一覧
クラス fk_Window

FLTK 用シーン描画ウィジェットクラス [詳細]

fk_Windowに対する継承グラフ
[凡例]
fk_Windowのコラボレーション図
[凡例]

## Public メソッド
| fk_Window (int x=0, int y=0, int w=300, int h=300, std::string name="FK Window")
| コンストラクタ [詳細]
virtual | ~fk_Window ()
| デストラクタ [詳細]
シーン制御関数
void | setScene (fk_Scene *scene)
| シーン登録関数 [詳細]
イベント・デバイス制御関数
int | drawWindow (bool drawFlag=true)
| 描画更新関数 [詳細]
bool | winOpenStatus (void)
| 描画状態取得関数 [詳細]
void | resizeWindow (int x, int y, int w, int h)
| 描画領域寸法変更関数 [詳細]
bool | getKeyStatus (char key, bool insideFlag=true)
| 標準キー状態取得関数 [詳細]
bool | getSpecialKeyStatus (fk_SpecialKey key, bool insideFlag=true)
| 特殊キー状態取得関数 [詳細]
char | getLastKey (void)
| 最終押下キー取得関数 [詳細]
void | getMousePosition (int *x, int *y, bool insideFlag=true)
| マウスポインタ位置取得関数 [詳細]
bool | getMouseStatus (fk_MouseButton button, bool insideFlag=true)
| マウスボタン状態取得関数 [詳細]
int | getMouseWheelStatus (void)
| マウスホイール回転量取得関数 [詳細]
void | getPickModel (fk_PickData *data, int pixel)
| ピックによるモデル選択関数 [詳細]
void | getPickModel (fk_PickData *data, int pixel, int x, int y)
| 任意投影座標でのモデル選択関数 [詳細]
フレームレート制御関数
void | setFPS (int fps)
投影座標・空間座標変換関数
bool | getProjectPosition (double x, double y, fk_Plane *plane, fk_Vector *pos)
| 投影平面から任意平面への射影点算出関数 [詳細]
bool | getProjectPosition (double x, double y, double dist, fk_Vector *pos)
| 投影平面から任意距離での射影点算出関数 [詳細]
bool | getWindowPosition (fk_Vector pos_3D, fk_Vector *pos_2D)
| 空間座標から投影座標への射影点算出関数 [詳細]
グラフィックス処理制御関数
void | setOGLPointerMode (bool mode)
| OpenGL 頂点配列処理制御関数 [詳細]
bool | getOGLPointerMode (void)
| OpenGL 頂点配列処理参照関数 [詳細]
void | setOGLTextureBindMode (bool mode)
| OpenGL テクスチャ切り替え低減処理制御関数 [詳細]
bool | getOGLTextureBindMode (void)
| OpenGL テクスチャ切り替え低減処理参照関数 [詳細]
void | clearTextureMemory (void)
| テクスチャメモリ解放関数 [詳細]
unsigned long | getUsingTextureMemory (void)
| テクスチャメモリ使用量取得関数 [詳細]
virtual void | preInit (void)
| 初期化前処理関数 [詳細]
virtual void | postInit (void)
| 初期化後処理関数 [詳細]
virtual void | preDraw (void)
| 描画前処理関数 [詳細]
virtual void | postDraw (void)
| 描画後処理関数 [詳細]
描画画像取り込み関数
bool | snapImage (std::string fileName, fk_ImageType format=FK_IMAGE_BMP, fk_SnapProcMode mode=FK_SNAP_GL_FRONT)
| 描画画像ファイル出力関数 [詳細]
bool | snapImage (fk_Image *image, fk_SnapProcMode mode=FK_SNAP_GL_FRONT)
| 描画画像データ出力関数 [詳細]
立体視モード制御関数
void | setOGLStereoMode (bool mode)
| 立体視モード設定関数 [詳細]
bool | getOGLStereoMode (void)
| 立体視モード取得関数 [詳細]
Public メソッド inherited from fk_BaseObject
| fk_BaseObject (fk_ObjectType type=FK_BASEOBJECT)
| コンストラクタ [詳細]
fk_ObjectType | getObjectType (void) const
| タイプ取得関数 [詳細]

## Static Public メソッド
時間参照関数
static unsigned long | getNow (void)
| 現時点システム時間参照関数 [詳細]
メッセージ出力制御関数
static void | setPutStrMode (const fk_PutStrMode mode)
| メッセージ出力モード設定関数 [詳細]
static fk_PutStrMode | getPutStrMode (void)
| メッセージ出力モード参照関数 [詳細]
static bool | setPutFile (const std::string &fileName)
| メッセージ出力用ファイル設定関数 [詳細]
static void | putString (const std::string &str)
| メッセージ出力文字列設定関数 [詳細]
static void | printf (const char *format,...)
| メッセージ出力書式付き設定関数 [詳細]
static void | clearBrowser (void)
| メッセージ出力用ブラウザ初期化関数 [詳細]

## Protected メソッド
void | drawScene (void)
void | drawSceneLeft (void)
void | drawSceneRight (void)

## 説明

FLTK 用シーン描画ウィジェットクラス

このクラスは、FK によるシーンを FLTK 用ウィジェットとして作成、制御するための機能を提供します。

fk_Window クラスは、FLTK の Fl_Gl_Window の派生クラスとなっています。 実際にアプリケーションとして表示を行うには、 Fl_Window によってウィンドウを生成し、 この fk_Window インスタンスを子ウィジェットとして登録する必要があります。 具体的な利用方法はユーザーズマニュアルのウィンドウに関する章や、 サンプルプログラムを参照して下さい。

fk_Window クラスが持つ機能は、以下のように多岐に渡ります。

- シーンの表示
- デバイスの情報取得やイベントハンドリング
- フレームレート制御
- 投影座標と空間座標の変換
- グラフィックス処理制御
- 表示画像のファイルへの出力
- メッセージ出力

しかし、シーンを表示するのに最低限必要な関数は setScene(), drawWindow(), winOpenStatus() の 3 つ (と、 Fl::wait() もしくは Fl::check()) のみです。 その他の関数は、必要に応じて参照して下さい。

本クラスの解説では、「投影座標」というものが多く登場します。 投影座標とは描画領域の左上を原点とし、 x 軸の正方向を右向き、y 軸の正方向を下向きとする平面座標系のことです。 数値はピクセル幅となります。 例えば、描画領域の大きさが (400, 500) であった場合、 その中心の投影座標は (200, 250)、右上端の投影座標は (400, 0) となります。

参照
  fk_Scene

## コンストラクタとデストラクタ

fk_Window::fk_Window | ( | int | x = `0`,
|  | int | y = `0`,
|  | int | w = `300`,
|  | int | h = `300`,
|  | std::string | name = `"FK Window"`
| ) |  |

コンストラクタ

引数

  [in] | x | 描画領域左上位置 x 座標
  [in] | y | 描画領域左上位置 y 座標
  [in] | w | 描画領域横幅
  [in] | h | 描画領域縦幅
  [in] | name | ウィジェット名称

virtual fk_Window::~fk_Window | ( |  | ) |
| virtual

デストラクタ

## 関数

void fk_Window::drawScene | ( | void |  | ) |
| protected

void fk_Window::drawSceneLeft | ( | void |  | ) |
| protected

void fk_Window::drawSceneRight | ( | void |  | ) |
| protected

void fk_Window::setScene | ( | fk_Scene * | scene | ) |

シーン登録関数

シーンを本ウィジェットの描画対象として登録します。

引数

  [in] | scene | シーンインスタンス

int fk_Window::drawWindow | ( | bool | drawFlag = `true` | ) |

描画更新関数

画面の描画を行います。 この関数を呼ばない限りは、シーン内のモデル状態に変更があっても、 画面には反映されません。

引数

  [in] | drawFlag | true の場合、正常に画面を更新します。 false の場合は、正常に画面更新が行えるかどうかだけの判定を行い、 実際の画面更新は行いません。

戻り値
  正常に描画が行われた場合 true を、失敗した場合は false を返します。

参照
  winOpenStatus()

bool fk_Window::winOpenStatus | ( | void |  | ) |

描画状態取得関数

drawWindow() を呼んだ後、実際に描画が適切に行われているかどうかを参照します。

戻り値
  適切に描画が行われていた場合は true を、 行われなかった場合は false を返します。

参照
  drawWindow()

void fk_Window::resizeWindow | ( | int | x,
|  | int | y,
|  | int | w,
|  | int | h
| ) |  |

描画領域寸法変更関数

描画領域の位置と大きさを変更します。

引数

  [in] | x | 描画領域左上位置 x 座標
  [in] | y | 描画領域左上位置 y 座標
  [in] | w | 描画領域横幅
  [in] | h | 描画領域縦幅

bool fk_Window::getKeyStatus | ( | char | key,
|  | bool | insideFlag = `true`
| ) |  |

標準キー状態取得関数

指定したキーの現在の押下状態を参照します。 例えば、「a」キーが押されているかどうかを調べる場合は、 以下のようなコードを記述します。

    fk_Window       win;

    if(win.getKeyStatus('a', true) == true) {
        // 押されている場合の処理
    }

特殊キーの状態については、 getSpecialKeyStatus() を用いてください。

引数

  [in] | key | キーを表す文字。ここには、スペース(' ') や数字 ('1') なども含みます。
  [in] | insideFlag | true だった場合、 マウスポインタが描画領域の外にあった場合は無条件に false を返します。 false だった場合は、マウスポインタの位置に関わらず押下状態を返します。

戻り値
  押されている場合は true を、押されていない場合は false を返します。

覚え書き
  (特殊キーを含む)多くのキーが同時に押さえられている場合、 正確な情報を返さない場合があります。 キーの同時押下許容数は、ハードウェアや OS によって異なってきます。

参照
  getSpecialKeyStatus()

bool fk_Window::getSpecialKeyStatus | ( | fk_SpecialKey | key,
|  | bool | insideFlag = `true`
| ) |  |

特殊キー状態取得関数

指定した特殊キーの現在の押下状態を参照します。 例えば、右矢印キーが押されているかどうかを調べる場合は、 以下のようなコードを記述します。

    fk_Window       win;

    if(win.getSpecialKeyStatus(FK_RIGHT, true) == true) {
        // 押されている場合の処理
    }

特殊キーの種類については、 fk_SpecialKey の項目を参照して下さい。

標準キーの状態については、 getKeyStatus() を用いてください。

引数

  [in] | key | キーを表す文字。
  [in] | insideFlag | true だった場合、 マウスポインタが描画領域の外にあった場合は無条件に false を返します。 false だった場合は、マウスポインタの位置に関わらず押下状態を返します。

戻り値
  押されている場合は true を、押されていない場合は false を返します。

覚え書き
  (標準キーを含む)多くのキーが同時に押さえられている場合、 正確な情報を返さない場合があります。 キーの同時押下許容数は、ハードウェアや OS によって異なってきます。

参照
  getKeyStatus()

char fk_Window::getLastKey | ( | void |  | ) |

最終押下キー取得関数

最後に押された標準キーを取得します。 ここで「押された」というのは、いわゆる「押し始めた瞬間」のことを指します。 例えば、以下のような順番でキー操作を行ったとします。

1. 「a」キーを押さえっぱなしにする。
2. さらに「b」キーを押さえっぱなしにする。
3. 「b」キーを離す。
4. 「a」キーを離す。

この場合、最後まで押さえられていたのは「a」キーとなりますが、 「押し始めた瞬間」は「b」キーの方が後であるため、 getLastKey() は「b」を返すことになります。

戻り値
  最後に押されたキーのアスキーコード。 アプリケーションが起動されてから、 一度もキーが押されていない場合は 0 を返します。

void fk_Window::getMousePosition | ( | int * | x,
|  | int * | y,
|  | bool | insideFlag = `true`
| ) |  |

マウスポインタ位置取得関数

現在のマウスポインタの位置を与えられた引数ポインタに格納します。 コード例は以下の通りです。

    fk_Window       win;
    int             x, y;

    win.getMousePosition(&x, &y, true);

格納される値は投影座標となります。 投影座標の詳細は本クラスの概要を参照して下さい。

引数

  [out] | x | マウスポインタの x 座標
  [out] | y | マウスポインタの y 座標
  [in] | insideFlag | true の場合は、もしマウスポインタが描画領域の外側にあった場合は x, y の両方に -1 を格納します。 false の場合は、描画領域の内外に関係なく、 投影座標に従って値を格納します。 この場合、マウスポインタが描画領域の左側や上側にあった場合は、 負の値が x や y に格納されることがありえることを意味しますので、 注意が必要です。

参照
  getMouseStatus(), getMouseWheelStatus(), getPickModel(fk_PickData *, int), getPickModel(fk_PickData *, int, int, int)

bool fk_Window::getMouseStatus | ( | fk_MouseButton | button,
|  | bool | insideFlag = `true`
| ) |  |

マウスボタン状態取得関数

指定したマウスボタンの現在の押下状態を参照します。 例えば、左マウスボタンが押されているかどうかを調べる場合は、 以下のようなコードを記述します。

    fk_Window       win;

    if(win.getMouseStatus(FK_MOUSE1, true) == true) {
        // 押されている場合の処理
    }

マウスボタンの種類については、 fk_MouseButton の項目を参照して下さい。

引数

  [in] | button | マウスボタンの種類
  [in] | insideFlag | true だった場合、 マウスポインタが描画領域の外にあった場合は無条件に false を返します。 false だった場合は、マウスポインタの位置に関わらず押下状態を返します。

戻り値
  押されている場合は true を、押されていない場合は false を返します。

int fk_Window::getMouseWheelStatus | ( | void |  | ) |

マウスホイール回転量取得関数

この関数は、ウスホイールの回転量を取得するときに使用します。 返り値は整数で、正の場合は手前側、負の場合は奥側に回転していることを意味します。 数値の単位は、テキストをスクロールさせた場合の「行数」に相当するものです。

この関数の回転量とは、この関数が以前に呼び出してからのホイール回転量を意味します。 従って、最初に呼び出したときは必ず 0 を返すことになります。 また、一度この関数で回転量を取得した後、 drawWindow() 関数を実行しない限りは常に 0 を返す仕様となっています。

戻り値
  回転量

参照
  getMousePosition(), getMouseStatus()

void fk_Window::getPickModel | ( | fk_PickData * | data,
|  | int | pixel
| ) |  |

ピックによるモデル選択関数

この関数を呼び出すと、 プログラムは描画領域にマウスピックが行われるまで一旦停止します。 ピックが行われたときに、 fk_Solid およびその派生クラスによる形状が表示されていた場合、 ピックした付近にあったモデルと位相要素を格納します。 格納データの詳細については、 fk_PickData を参照して下さい。

ピック操作を行わず、任意の投影座標において探索を行いたい場合は、 getPickModel(fk_PickData *, int, int, int) を用いてください。

引数

  [out] | data | モデルと位相要素を格納するための、 fk_PickData 型インスタンスのポインタ。
  [in] | pixel | 選択の際、どの程度の範囲までを取得対象とするかの距離。 単位はピクセルとなります。

参照
  getPickModel(fk_PickData *data, int, int, int), fk_PickData, fk_Solid

void fk_Window::getPickModel | ( | fk_PickData * | data,
|  | int | pixel,
|  | int | x,
|  | int | y
| ) |  |

任意投影座標でのモデル選択関数

この関数は、 fk_Solid およびその派生クラスによる形状が表示されていた場合、 指定した投影座標の付近にあったモデルと位相要素を格納します。 投影座標についての詳細は、本クラスの概要を参照して下さい。 格納データの詳細については、 fk_PickData を参照して下さい。

ピック操作によってモデルや位相要素を選択したい場合は、 getPickModel(fk_PickData *, int) を用いてください。

引数

  [out] | data | モデルと位相要素を格納するための、 fk_PickData 型インスタンスのポインタ。
  [in] | pixel | 選択の際、どの程度の範囲までを取得対象とするかの距離。 単位はピクセルとなります。
  [in] | x | 探索対象の投影座標 x 成分
  [in] | y | 探索対象の投影座標 y 成分

参照
  getPickModel(fk_PickData *data, int), fk_PickData, fk_Solid

void fk_Window::setFPS | ( | int | fps | ) |

drawWindow() をコールした際に調整する FPS を指定します。 FPS(Frame Per Second)とは、1秒間中で画面更新が行われる回数の単位です。 この値を 0 に設定した場合は、FPS制御を行いません。 デフォルトは 0 です。

引数

  [in] | fps | FPS値

bool fk_Window::getProjectPosition | ( | double | x,
|  | double | y,
|  | fk_Plane * | plane,
|  | fk_Vector * | pos
| ) |  |

投影平面から任意平面への射影点算出関数

この関数は、描画領域上の投影座標から、 任意の平面への射影変換を行い、射影点を求めます。 これは、投影面上の投影座標とカメラを結ぶ直線と、 引数として入力された平面の交点を求めるということと同義です。 投影座標の詳細は本クラスの概要を参照して下さい。

引数

  [in] | x | 投影座標の x 成分
  [in] | y | 投影座標の y 成分
  [in] | plane | 射影先の平面。平面情報の設定については fk_Plane の解説を参照して下さい。
  [out] | pos | 算出した点の位置ベクトル

戻り値
  算出に成功すれば true を、失敗すれば false を返します。

参照
  getProjectPosition(double, double, double, fk_Vector *), getWindowPosition(), fk_Plane

bool fk_Window::getProjectPosition | ( | double | x,
|  | double | y,
|  | double | dist,
|  | fk_Vector * | pos
| ) |  |

投影平面から任意距離での射影点算出関数

この関数は、描画領域上の投影座標に対し、 カメラから指定した距離となっている3D空間中の点を算出します。 これは、投影面上の投影座標とカメラを結ぶ直線と、 カメラを中心とし指定距離を半径とする球面の交点を求めることと同義です。 投影座標の詳細は本クラスの概要を参照して下さい。

引数

  [in] | x | 投影座標の x 成分
  [in] | y | 投影座標の y 成分
  [in] | dist | カメラからの空間中の距離
  [out] | pos | 算出した点の位置ベクトル

戻り値
  算出に成功すれば true を、失敗すれば false を返します。

bool fk_Window::getWindowPosition | ( | fk_Vector | pos_3D,
|  | fk_Vector * | pos_2D
| ) |  |

空間座標から投影座標への射影点算出関数

この関数は、空間座標から投影座標への射影点を算出します。 これは、ある空間中の位置が画面上でどこに表示されるかを知ることと同義です。 投影座標の詳細は本クラスの概要を参照して下さい。

なお、射影点の z 成分は投影における Near 面上の場合 0、 Far 面上の場合 1 となり、その間は線形補間した値となります。 つまり、カメラに近いほど値が小さくなるということです。

引数

  [in] | pos_3D | 空間座標位置ベクトル
  [out] | pos_2D | 射影点となる投影座標の位置ベクトル

参照
  getProjectPosition(double, double, fk_Plane *, fk_Vector *), getProjectPosition(double, double, double, fk_Vector *), fk_Perspective, fk_Ortho, fk_Frustum

void fk_Window::setOGLPointerMode | ( | bool | mode | ) |

OpenGL 頂点配列処理制御関数

この関数は、OpenGL 環境における頂点配列の使用を制御します。 OpenGL には「頂点配列」と呼ばれる仕組みがあり、 一般的にはこの機能を用いると描画処理が高速になります。 しかし、実行する環境によってはかえって低速になったり、 描画に不具合が生じることもあります。 そのような場合、この関数を用いて頂点配列を利用しないように、 内部処理を切り替えることが可能です。 デフォルトでは「有効」となっています。

覚え書き
  この関数による設定は、OpenGL 環境においてのみ有効です。 Direct3D 版においては設定は意味をなしません。

引数

  [in] | mode | true の場合、頂点配列処理を有効とします。 false の場合は無効とします。

bool fk_Window::getOGLPointerMode | ( | void |  | ) |

OpenGL 頂点配列処理参照関数

現在の OpenGL 頂点配列処理が有効であるかどうかを参照します。 頂点配列についての詳細は setOGLPointerMode() の解説を参照して下さい。

覚え書き
  この関数は OpenGL 環境においてのみ有効です。 Direct3D 版においては意味のある値を返しません。

戻り値
  頂点配列処理が有効である場合 true を、 無効である場合 false を返します。

参照
  setOGLPointerMode()

void fk_Window::setOGLTextureBindMode | ( | bool | mode | ) |

OpenGL テクスチャ切り替え低減処理制御関数

この関数は、OpenGL 環境におけるテクスチャ描画処理を制御します。 リアルタイム 3DCG の描画処理において、使用するテクスチャの切り替え処理が 頻発することはパフォーマンスの低下を招きます。そこで FK の内部処理では、 同じテクスチャを続けて使用する際に不要な切り替え処理が発生しないようにしています。 しかし、実行する環境によっては描画に不具合が生じることもあります。 そのような場合、この関数を用いてテクスチャの切り替え処理をその都度行うように、 内部処理を切り替えることが可能です。 デフォルトでは切り替え低減処理が「有効」となっています。

覚え書き
  この関数による設定は、OpenGL 環境においてのみ有効です。 Direct3D 版においては設定は意味をなしません。

引数

  [in] | mode | true の場合、テクスチャ切り替え低減処理を有効とします。 false の場合は無効とします。

bool fk_Window::getOGLTextureBindMode | ( | void |  | ) |

OpenGL テクスチャ切り替え低減処理参照関数

現在の OpenGL テクスチャ切り替え低減理が有効であるかどうかを参照します。 該当処理についての詳細は setOGLTextureBindMode() の解説を参照して下さい。

覚え書き
  この関数は OpenGL 環境においてのみ有効です。 Direct3D 版においては意味のある値を返しません。

戻り値
  テクスチャ切り替え低減処理が有効である場合 true を、 無効である場合 false を返します。

参照
  setOGLTextureBindMode()

void fk_Window::clearTextureMemory | ( | void |  | ) |

テクスチャメモリ解放関数

この関数は、現在確保されているテクスチャメモリの解放を行います。

アプリケーションの中でテクスチャマッピングを行う際、 各テクスチャ画像のキャッシングを行っています。 これは、一般的にテクスチャマッピングにおいては同じ画像を再利用する割合が高いため、 キャッシングの効率が良いためです。 しかし、それは同時にテクスチャの格納によるメモリ使用量増大を意味します。 本関数は、確保したメモリを全て解放します。 これによりメモリ使用量は減少しますが、 テクスチャ画像入力のための処理時間が増加する可能性があります。

unsigned long fk_Window::getUsingTextureMemory | ( | void |  | ) |

テクスチャメモリ使用量取得関数

この関数は、現在確保されているテクスチャメモリの使用量を取得します。

取得できる値は、FK が内部処理によって現時点までにキャッシングを行った テクスチャ画像バッファのトータルサイズです。単位はバイトです。 FK では描画効率を優先するため、使用する画像よりも大きなサイズを確保して 画像のキャッシングを行っています。また GPU のドライバの設定によっては、 実際に GPU 上で占有しているメモリ容量と誤差が生じる場合もあります。 アプリケーションが動作するシステムで使用可能な容量を超えてしまうと、 正常なテクスチャ描画ができなくなりますので、この関数で使用量を確認し、 必要に応じて clearTextureMemory() を使用するのが良いでしょう。

戻り値
  テクスチャメモリ使用量

参照
  clearTextureMemory()

virtual void fk_Window::preInit | ( | void |  | ) |
| inline virtual

初期化前処理関数

この関数は、グラフィックスシステムの初期化処理において、 処理前に自動的にシステム内部から呼び出される関数です。 fk_Window クラスの派生クラスを作成し、 そのクラスにおいて本関数を再定義することによって、 グラフィックスシステム初期化時の処理を追加することが可能です。 代表的な用途として、特殊デバイスの初期化処理などがあります。

参照
  postInit(), preDraw(), postDraw()

virtual void fk_Window::postInit | ( | void |  | ) |
| inline virtual

初期化後処理関数

この関数は、グラフィックスシステムの初期化処理において、 処理後に自動的にシステム内部から呼び出される関数です。 fk_Window クラスの派生クラスを作成し、 そのクラスにおいて本関数を再定義することによって、 グラフィックスシステム初期化時の処理を追加することが可能です。 代表的な用途として、特殊デバイスの初期化処理などがあります。

参照
  preInit(), preDraw(), postDraw()

virtual void fk_Window::preDraw | ( | void |  | ) |
| inline virtual

描画前処理関数

この関数は、グラフィックスシステムの描画処理において、 描画前に自動的にシステム内部から呼び出される関数です。 fk_Window クラスの派生クラスを作成し、 そのクラスにおいて本関数を再定義することによって、 グラフィックスシステム毎描画時の処理を追加することが可能です。 代表的な用途として、特殊デバイスの情報取得などがあります。

virtual void fk_Window::postDraw | ( | void |  | ) |
| inline virtual

描画後処理関数

この関数は、グラフィックスシステムの描画処理において、 描画後に自動的にシステム内部から呼び出される関数です。 fk_Window クラスの派生クラスを作成し、 そのクラスにおいて本関数を再定義することによって、 グラフィックスシステム毎描画時の処理を追加することが可能です。 代表的な用途として、特殊デバイスの情報取得などがあります。

bool fk_Window::snapImage | ( | std::string | fileName,
|  | fk_ImageType | format = `FK_IMAGE_BMP`,
|  | fk_SnapProcMode | mode = `FK_SNAP_GL_FRONT`
| ) |  |

描画画像ファイル出力関数

この関数は、描画領域に表示されている画像を、画像ファイルとして出力します。

引数

  [in] | fileName | 画像ファイル名
  [in] | format | 画像ファイルのフォーマット。 現在利用可能なフォーマットは、 fk_ImageType の解説を参照して下さい。
  [in] | mode | 画像の取込先となるグラフィックスデバイス名。 取り込みがうまく動作しない場合は、 この引数の値を変更してください。

戻り値
  出力に成功すれば true を、失敗すれば false を返します。

bool fk_Window::snapImage | ( | fk_Image * | image,
|  | fk_SnapProcMode | mode = `FK_SNAP_GL_FRONT`
| ) |  |

描画画像データ出力関数

この関数は、描画領域に表示されている画像を、 fk_Image 型のインスタンスに出力します。

引数

  [in] | image | 画像データ出力先インスタンス
  [in] | mode | 画像の取込先となるグラフィックスデバイス名。 取り込みがうまく動作しない場合は、 この引数の値を変更してください。

戻り値
  出力に成功すれば true を、失敗すれば false を返します。

static unsigned long fk_Window::getNow | ( | void |  | ) |
| static

現時点システム時間参照関数

この関数は、呼んだ時点でのシステム時間を取得します。 システム時間の定義は実行プラットフォームによって意味が異なりますが、 どのプラットフォームでも単位はミリ秒です。

覚え書き
  本関数は static 関数なので、 以下のように記述することでインスタンスの生成なしに利用することができます。

      unsigned long nowTime = fk_Window::getNow();

戻り値
  現在のシステム時間

static void fk_Window::setPutStrMode | ( | const fk_PutStrMode | mode | ) |
| static

メッセージ出力モード設定関数

この関数は、メッセージ出力のモードを設定します。 モードには、以下のようなものがあります。

- FK_PUTSTR_BROWSER: メッセージ出力用ブラウザに出力します。デフォルトはこの値となっています。
- FK_PUTSTR_CONSOLE: コンソールの標準出力に出力します。
- FK_PUTSTR_ERR_CONSOLE: コンソールのエラー出力に出力します。
- FK_PUTSTR_FILE: setPutFile() 関数で指定したファイルに出力します。
- FK_PUTSTR_NONE: 出力を行いません。

覚え書き
  本関数は static 関数なので、 以下のように記述することでインスタンスの生成なしに利用することができます。

      fk_Window::setPutStrMode(FK_PUTSTR_CONSOLE);

引数

  [in] | mode | 出力モード

参照
  getPutStrMode(), setPutFile(), putString(), printf(), clearBrowser()

static fk_PutStrMode fk_Window::getPutStrMode | ( | void |  | ) |
| static

メッセージ出力モード参照関数

この関数は、メッセージ出力のモードを取得します。

戻り値
  出力モード

参照
  setPutStrMode()

static bool fk_Window::setPutFile | ( | const std::string & | fileName | ) |
| static

メッセージ出力用ファイル設定関数

この関数は、メッセージ出力のモードにおいてファイル出力 (FK_PUTSTR_FILE) を指定したときの、出力ファイル名を設定するものです。

覚え書き
  本関数は static 関数なので、 以下のように記述することでインスタンスの生成なしに利用することができます。

      fk_Window::setPutFile("sample.txt");

引数

  [in] | fileName | 出力ファイル名

戻り値
  設定に成功すれば true を、失敗すれば false を返します。

参照
  setPutStrMode(), putString(), printf()

static void fk_Window::putString | ( | const std::string & | str | ) |
| static

メッセージ出力文字列設定関数

この関数は、与えられた文字列をメッセージとして出力を行います。 出力先は、 setPutStrMode() によって設定したものとなります。

覚え書き
  本関数は static 関数なので、 以下のように記述することでインスタンスの生成なしに利用することができます。

      fk_Window::putString("sample");

引数

  [in] | str | 出力文字列

参照
  setPutStrMode(), setPutFile(), printf(), clearBrowser()

static void fk_Window::printf | ( | const char * | format,
|  |  | ...
| ) |  |
| static

メッセージ出力書式付き設定関数

この関数は、与えられたフォーマットに従ってメッセージとして出力します。 この関数の引数は、C や C++ における標準関数である printf に準じます。

覚え書き
  本関数は static 関数なので、 以下のように記述することでインスタンスの生成なしに利用することができます。

      int     i = 10;

      fk_Window::printf("i = %d", i);

参照
  setPutStrMode(), setPutFile(), putString(), clearBrowser()

static void fk_Window::clearBrowser | ( | void |  | ) |
| static

メッセージ出力用ブラウザ初期化関数

この関数は、メッセージ出力における出力用ブラウザに対し、 表示の初期化を行います。 この関数を呼ぶ前に表示されていた文字列は全て削除されます。

覚え書き
  本関数は static 関数なので、 以下のように記述することでインスタンスの生成なしに利用することができます。

      fk_Window::clearBrowser()

参照
  setPutStrMode(), putString(), printf()

void fk_Window::setOGLStereoMode | ( | bool | mode | ) |

立体視モード設定関数

ウィンドウに対して立体視モードを設定します。 デフォルトでは無効になっています。

覚え書き
  このシステムにおける立体視画像出力は、OpenGL の標準拡張機能を利用します。 Direct3D 版では利用できないので注意してください。 立体視を利用するには、Quad Buffer をサポートしているグラフィックカードが必須です。 本プロジェクトで動作を確認しているのは NVIDIA 社の Quadro シリーズのみです。 対応していない環境で立体視モードを有効にしようとした場合は、 モードを変更せずに関数の処理が終了します。 モード切替が成功したかどうかは、後述する関数 getOGLStereoMode()で判定してください。

引数

  [in] | mode | true だった場合、立体視モードを有効にします。 false だった場合、立体視モードを無効にします。 いずれの動作においても、OpenGL の動作モードの再設定が行われます。

参照
  fk_DisplayLink, getOGLStereoMode()

bool fk_Window::getOGLStereoMode | ( | void |  | ) |

立体視モード取得関数

ウィンドウの現在の立体視モードを取得します。

覚え書き
  この関数は OpenGL 環境においてのみ有効です。 Direct3D 版においては意味のある値を返しません。

戻り値
  true だった場合、立体視モードが有効になっています。 false だった場合、立体視モードが無効になっています。

参照
  fk_DisplayLink, setOGLStereoMode()