イルリッヒたん@Wiki
表示関連1
最終更新:
匿名ユーザー
-
view
ビューポートを使う
<Version 0.12.0>
ビューポートっつうのは上の画面みたいになの。
アクション系のRPGやSIMでこの機能があると結構便利。
ステータスなどを表示させておきたいが、そうすると画面にかぶって邪魔になる、でも閉じると不便なんて時に、ビューポートで余白を作り、そこにステータスなどを置くなんてことができる。
で、その方法だが、とても簡単。
- setViewPort() でビューポートを設定。
- ビューポート内だけに表示したいものを描く。
- setViewPort() でピューポートをスクリーン全体に戻す。
- ピューポート外にも表示するものを描く。
- 以上。
3のスクリーン全体に戻すってトコ重要。
忘れるとそれ以後、全てのものがビューポート内への描画対象になってしまう。
beginScene() もビューポート内のみ、GUIなどもビューポート内のみへの描画になってしまう。
特にGUIはビューポート内に描いてしまうと、表示と実際の位置関係がおかしくなってしまうので注意。
忘れるとそれ以後、全てのものがビューポート内への描画対象になってしまう。
beginScene() もビューポート内のみ、GUIなどもビューポート内のみへの描画になってしまう。
特にGUIはビューポート内に描いてしまうと、表示と実際の位置関係がおかしくなってしまうので注意。
例:
Driver->beginScene( true, true, SColor( 0, 100, 100, 160 ) );
Driver->setViewPort( rect<s32>( 0, 0, 512, 384 ) );
Scene->drawAll();
Driver->setViewPort( rect<s32>( 0, 0, 640, 480 ) );
Env->drawAll();
Driver->endScene();
Driver->beginScene( true, true, SColor( 0, 100, 100, 160 ) );
Driver->setViewPort( rect<s32>( 0, 0, 512, 384 ) );
Scene->drawAll();
Driver->setViewPort( rect<s32>( 0, 0, 640, 480 ) );
Env->drawAll();
Driver->endScene();
上の例ではビューポートを(0, 0, 512, 384)に設定してSceneのオブジェクト(メッシュ類)を描き、ビューポートをスクリーン全体に戻してEnvのオブジェクト(GUI)を描いている。
- bool setViewPort( &area )
- ビューポートを設定する。
rect<s32> &area ビューポートに設定する範囲。(x1, y1, x2, y2)