
DirectXを使ったプログラミングの初心者で、Softbank Creativeの「シューティングゲームプログラミング」を使って勉強しています。
ライブラリの内容も関わってくるので少し分かりづらい質問ですが、2Dと3Dとで座標の指定の仕方が違うのがよく分かりません。
3Dでは、
D3DXMATRIX mat_view;
D3DXVECTOR3 vec_from=D3DXVECTOR3(0, 100, 0);D3DXVECTOR3 vec_lookat=D3DXVECTOR3(0, 0, 0);D3DXVECTOR3 vec_up=D3DXVECTOR3(0, 0, 1);D3DXMatrixLookAtLH(&mat_view, &vec_from, &vec_lookat, &vec_up);
device->SetTransform(D3DTS_VIEW, &mat_view);
D3DXMatrixOrthoLH(&mat_proj, 120, 90, 1, 1000);
device->SetTransform(D3DTS_PROJECTION, &mat_proj);
Graphics->SetLight(0, D3DLIGHT_DIRECTIONAL, -1.0f, -1.0f, -1.0f, 1000);
このあたりでカメラを設定し、画面端のx座標が±0.6になる……といったことを決めていましたが、
2Dでは
VERTEX vertex[4]={
{x, y, z, 1, diffuse, u, v},
{x, y+dy, z, 1, diffuse, u, v+dv},
{x+dx, y, z, 1, diffuse, u+du, v},
{x+dx, y+dy, z, 1, diffuse, u+du, v+dv}
};
device->SetFVF(D3DFVF_VERTEX);
device->DrawPrimitiveUP(D3DPT_TRIANGLESTRIP, 2, vertex, sizeof(VERTEX));
例えば四角形ポリゴンを描くときにこんな風に記述して、
このx,yにはウィンドウの座標が入っています。
SETFVFでD3DFVF_XYZRHWを設定することで直接2Dに持ってこれる、というようなことが調べて分かったのですが、
三角形ポリゴンにテクスチャを貼り付けて2Dのような表現をする場合、必ずこのようにウィンドウに合わせた座標になる(する?)のでしょうか?
つまり、3Dの時のように左端がx=-0.6……というような座標系で表現できないのでしょうか?
書籍には3Dから2Dに変換する式などがありましたが、このような変換をいちいち行わなくても最初から3Dの座標に2Dのものを表示できないのでしょうか?
なにぶん初心者で見当外れのことを言っているかも知れませんが、ご教授をお願いいたします。
No.1ベストアンサー
- 回答日時:
質問文を全て読んだわけではないので、そこの所ご了承下さい。
>三角形ポリゴンにテクスチャを貼り付けて2Dのような表現をする場合、必ずこのようにウィンドウに合わせた座標になる(する?)のでしょうか?
はい、その通りです。
D3DFVF_XYZRHWを指定するとそうなります。
>書籍には3Dから2Dに変換する式などがありましたが
ワールド→ビュー→射影変換の三工程を指してるのでしたら、例え3Dゲームでも必要な変換工程です。
なので、通常ここを避ける事は出来ません。
避ける手段としてD3DFVF_XYZRHWがあります。
D3DFVF_XYZRHWを指定したまま、座標を-1.0~1.0fで扱いたい場合は
まずウィンドウ作成時のクライアント座標を取得して下さい。
そして、例えばクライアント座標が640*480とした時
x=-0.6fと同等の座標を「0.4*320」で求める事ができます。
(0.4=-0.6+1)
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) [オートフィルター]機能について 3 2023/02/04 14:32
- その他(Microsoft Office) エクセルのマクロでスライサー教えてください。 1 2022/09/28 16:40
- Visual Basic(VBA) C3とC4のセルに、Visual basicで実行した時入力した値をC3に表示させ、その後に、C3に 1 2023/07/14 09:43
- Excel(エクセル) エクセル2019の関数を教えてください。 8 2022/12/16 12:45
- Excel(エクセル) エクセルのオートフィルについて質問があります。 2 2022/04/08 22:31
- Excel(エクセル) ログインIDの一発入力? 5 2023/07/07 12:30
- Excel(エクセル) Formulaプロパティーを使ってセルに数式を組んだのですが簡潔にしたい。 3 2022/08/21 20:51
- Excel(エクセル) excelの数式の書き方について。 以下のような数式をSheet1に書いています。 Sheet1のB 1 2022/09/28 18:43
- Excel(エクセル) スプレッドシートの関数 2 2022/11/16 17:36
- フリーソフト パソコンで、フォルダの最下層を探索してフォルダ名に連番を挿入するアプリを探しています。 例: アルフ 2 2023/06/09 22:04
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
グラフの交点の求め方(Excel)
-
スクリーン上の画像をマウスド...
-
運動のプログラムをおしえてく...
-
LinuxでCursesライブラリを使っ...
-
精度の荒いOCR文書からのデータ...
-
コントロールのドラック&ドロップ
-
ガウシアンフィルタのCプログラム
-
EXCEL VBA でウインドウの...
-
内積を用いた移動する線分と円...
-
3D→2Dの座標変換で、スクリーン...
-
VB6→VS2005アップグレード後
-
MATLABの画像処理、2本の直線の...
-
複数コントロール(ラベル)を...
-
空間上の四面体の体積
-
回転する矩形同士の当たり判定...
-
アクセスのセルの数え方。
-
マインクラフト(pc版)で座標...
-
GLで座標を変えて回転させたい
-
碁盤目の経路数
-
ポインターの位置を検知する方...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
グラフの交点の求め方(Excel)
-
マインクラフト(pc版)で座標...
-
ダイアログ内コントロールの位...
-
ワード上Shapeの位置情報を統一...
-
エクセルで回転する座標の出し方
-
3次元空間上の2つの座標から...
-
シーケンサー(PLC?)で制...
-
多角形の内部かどうか判定する方法
-
エクセルである点からの距離で...
-
始点、終点の二つの座標と半径...
-
直線上にある点の座標の求め方
-
以下のプログラムは重心を求め...
-
交差する2線分の交点座標の求め方
-
PPTのVBA スライド右下端の座...
-
選択範囲の座標値の抽出
-
閉図形の座標の配列が右回りか...
-
Excel VBA で自在に図形を変化...
-
ピクチャボックスの座標取得
-
アナログ時計の短針(時間用針)...
-
PanelとCanvasの違いについて
おすすめ情報