DrawPolygon3D関数について

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
Libra

DrawPolygon3D関数について

#1

投稿記事 by Libra » 16年前

DxライブラリのDrawPolygon3D関数についてです。

ポリゴンの座標を用いて描画する時、z軸方向に対して動かしたところ、収束点(?)がウィンドウの中心(ウィンドウサイズが640×480なので、(x、y)=(320,240) )になるようで、収束点を自分の作ったゲームのフレームの中心(任意の位置)に合わせたいのですが、どのようにすればいいでしょうか?

Dixq (管理人)

Re:DrawPolygon3D関数について

#2

投稿記事 by Dixq (管理人) » 16年前

東方のように、シューティング画面の中心が左だったりする場合に困るんですよね。

これは非公開関数を使うと実現出来るようになります。

龍神録では以下の関数を呼ぶことで中心を左に寄せています。
void move_view(){
	float X=640.f, Y=480.f; // ウィンドウのサイズ
	float Xd=-110.f, Yd=0.f ; // 消失点の移動量
	MATRIX mat;
	CreateViewportMatrix(&mat, X/2.f+Xd, Y/2.f+Yd, X, Y);
	SetTransformToViewport(&mat);
}
 
この関数をメインループに入る前に一度呼んであげて下さい。
するとx座標が-110した位置が中心になります。このXdとYdに好きな値を入れてやれば好きな位置が中心になります。

Libra

Re:DrawPolygon3D関数について

#3

投稿記事 by Libra » 16年前

回答ありがとうございます。

MATRIX型というのもVERTEX_3D型と同じDxlibについてる構造体のようですね。自分が言っていたのは恐らく、注視点でしょうか?ヘッダファイルを見て、注視点の座標がマクロで定義されていないかと探して見たのですが、無かったので質問しました。まさか、非公開関数で実現できるとは(汗)
もう少しヘッダファイルの中身にある非公開関数、研究してみます。

この関数を使えば、妖々跋扈のようにスクロールしている背景のカメラ位置を変えたりいろいろ出来そうですね。

閉鎖

“C言語何でも質問掲示板” へ戻る