FineKernelToolKit  2.8.10
Public メソッド
クラス 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 setFrameMode (fk_FrameMode mode)
 フレームレート制御方法指定関数
fk_FrameMode getFrameMode (void)
 フレームレート制御方法参照関数
void setFrameInterval (int ms)
 フレーム間時間設定関数
int getFrameInterval (void)
 フレーム間時間参照関数
int getSkipFrame (void)
 スキップフレーム数参照関数
投影座標・空間座標変換関数
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)
 立体視モード取得関数

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)
 メッセージ出力用ブラウザ初期化関数

説明

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::setScene ( fk_Scene scene)

シーン登録関数

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

引数:
[in]sceneシーンインスタンス
int fk_Window::drawWindow ( bool  drawFlag = true)

描画更新関数

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

引数:
[in]drawFlagtrue の場合、正常に画面を更新します。 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]insideFlagtrue だった場合、 マウスポインタが描画領域の外にあった場合は無条件に 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]insideFlagtrue だった場合、 マウスポインタが描画領域の外にあった場合は無条件に 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]insideFlagtrue の場合は、もしマウスポインタが描画領域の外側にあった場合は 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]insideFlagtrue だった場合、 マウスポインタが描画領域の外にあった場合は無条件に 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::setFrameMode ( fk_FrameMode  mode)

フレームレート制御方法指定関数

この関数は、フレームレートを制御するためのモードを指定します。 「フレームレート」とは、1秒間あたりの画面更新回数のことです。 フレームレートの制御には、以下の2種類があります。

  • フレームレートが高すぎる場合に、一定のフレームレート以上が出ないようにする。 この制御を「ウェイトモード」と言います。
  • フレームレートが低すぎる場合に、画面更新をスキップする。 この制御を「スキップモード」と言います。

モードには、以下の3種類が指定できます。

  • FK_DEFAULT_FRAME: 制御を行いません。
  • FK_WAIT_FRAME: ウェイトモードを有効にします。
  • FK_SKIP_FRAME: スキップモードを有効にします。

なお、FK_WAIT_FRAME と FK_SKIP_FRAME は同時に指定することが可能です。 その場合は、以下のようにビット論理和演算子を利用します。

引数:
[in]mode制御モード
参照:
setFrameInterval(), getSkipFrame()
fk_FrameMode fk_Window::getFrameMode ( void  )

フレームレート制御方法参照関数

現在のフレームレート制御方法を取得します。

戻り値:
制御モードを返します。
参照:
setFrameMode()
void fk_Window::setFrameInterval ( int  ms)

フレーム間時間設定関数

この関数は、フレームレート制御の「ウェイトモード」および 「スキップモード」における、 フレーム間時間の設定を行います。 「フレーム間時間」とは、 あるフレームが表示されてから次のフレームが表示されるまでの時間のことです。 例えば秒間60フレームとしたい場合は、 フレーム間時間は $\frac{1}{60} = 0.01666\cdots$ となります。 なお、本関数では指定はミリ秒(1000分の1秒)単位で行い、 型は int 型となります。従って、前述した秒間60フレームの場合は 「16」または「17」を指定することになります。

引数:
[in]msフレーム間時間。単位はミリ秒です。
参照:
setFrameMode() getSkipFrame()
int fk_Window::getFrameInterval ( void  )

フレーム間時間参照関数

現在設定されているフレーム間時間を参照します。

戻り値:
フレーム間時間を返します。単位はミリ秒です。
参照:
setFrameInterval()
int fk_Window::getSkipFrame ( void  )

スキップフレーム数参照関数

フレーム制御で「スキップモード」を用いている場合に、 現在表示されているフレームとその前のフレームの間に、 何枚分のフレームが描画スキップされたかを参照します。

戻り値:
スキップされたフレーム枚数
参照:
setFrameMode(), setFrameInterval()
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]modetrue の場合、頂点配列処理を有効とします。 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]modetrue の場合、テクスチャ切り替え低減処理を有効とします。 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 関数なので、 以下のように記述することでインスタンスの生成なしに利用することができます。
引数:
[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 関数なので、 以下のように記述することでインスタンスの生成なしに利用することができます。
引数:
[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 関数なので、 以下のように記述することでインスタンスの生成なしに利用することができます。
参照:
setPutStrMode(), putString(), printf()
void fk_Window::setOGLStereoMode ( bool  mode)

立体視モード設定関数

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

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

立体視モード取得関数

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

覚え書き:
この関数は OpenGL 環境においてのみ有効です。 Direct3D 版においては意味のある値を返しません。
戻り値:
true だった場合、立体視モードが有効になっています。 false だった場合、立体視モードが無効になっています。
参照:
fk_DisplayLink, setOGLStereoMode()
 全て クラス ネームスペース ファイル 関数 変数 型定義 列挙型 列挙型の値 フレンド マクロ定義