【C++】 DirectX初心者質問スレ Part21 【C】
VRML
どこかに横スクロールアクション(洞窟物語みたいな)のソースとかないでしょうか?
>>924 こんなことを言う奴が増えたおかげで、クソゲーが急増した。
ばか雑誌がグラフィックばかり追いかけた結果だ。
Xファイルのアニメーションについて質問です
歩行や武器を振るアニメーションを実装する場合は
1つのXファイルにモーションをまとめて再生するの動作ごとに別のXファイルを再生するのは
どちらが一般的ですか
普通に考えてメッシュは一つ、アニメーションが複数
957 :
デフォルトの名無しさん:2009/02/26(木) 19:02:17
横スクロールのシューティングだって大して変わらないじゃないの
とすると縦横のスクロールなんてたいしてかわらないってことで
ゲームと一切関係ない背景のスクロールがそんなに重要か?って話になって
結局インベーダに落ち着いた感動ストーリー
958 :
955:2009/02/26(木) 21:08:05
ということは
1つのXファイルの中に複数のアニメーションを入れて
使いたいフレームを呼び出すということですか
ありがとうございました
質問させてください。
開発環境は「Visual C++ 2005 Express Edition」です。
http://msdn.microsoft.com/ja-jp/academic/cc998628.aspx よりサンプルソースをダウンロードし、
DirectXのSDKは
http://msdn.microsoft.com/ja-jp/directx/aa937788.aspx の 「DirectX SDK (November 2008) 公開中 (英語)」をインストールしました。
ビルドしたんですが catch(void) の部分、Microsoft.DirectX.dll が見つからない、ともう一つのエラーが出ました。
上記2点は解決したんですが最後のひとつの
error C2664: 'Microsoft::DirectX::Direct3D::Device::Device(int,Microsoft::DirectX::Direct3D::DeviceType,
System::IntPtr,Microsoft::DirectX::Direct3D::CreateFlags,Microsoft::DirectX::Direct3D::PresentParameters __gc * __gc[])' :
3 番目の引数を 'CApp __gc *const ' から 'System::IntPtr' に変換できません。(新しい機能 ; ヘルプを参照)
コンストラクタはソース型を持てません、またはコンストラクタのオーバーロードの解決があいまいです。
の解決方法が分かりません。
コードの抜粋です。
m_pDevice = new Direct3D::Device(0,Direct3D::DeviceType::Hardware,
this,
Direct3D::CreateFlags::SoftwareVertexProcessing,
pd3dpp); // Direct3DDeviceオブジェクトを生成
引数のthisの型は __gc class CApp : public System::Windows::Forms::Form です。
ご教示よろしくお願いします。
Direct3D::PresentParameters* pd3dpps __gc[]= { pd3dpp };
m_pDevice = new Direct3D::Device(0,Direct3D::DeviceType::Hardware,
this->Handle,
Direct3D::CreateFlags::SoftwareVertexProcessing,
pd3dpps); ってすれば通るけど、
Managed C++ は窓から投げ捨てた方がいいな。
961 :
959:2009/02/27(金) 00:14:09
>>960 ありがとうございます。
該当部分のエラーは切り抜けたんですが今度は’winmm.lib’が見つからない言われました。
デフォルトではインストールされてないみたいです。
こっちのほうはもう少し調べてみますが。
>Managed C++ は窓から投げ捨てた方が
Managed C++という単語を調べたんですが
意味的には「Visual C++ 2005 Express Edition」は捨てたほうがいいということですかね?
DirectXは何も分からないので勉強にはいいかな?と思ったんですが・・・
ちんこ起つのかな??
>>961 Windows SDKいれてないだろ?
今すぐVC++ 2005EEをアンインストールして2008入れ直せ
3つの頂点から三角ポリゴンを書きましたが、これどっちが表なんですか?
法線とかいうのは表に向かう線ですよね?どこで表裏の設定するんですか?
カメラから見て点が時計回りになるなら表。そうでないなら裏として描画される。
裏なら描画されない。
ただ、設定によっては逆回りを表とすることもできるが、あまり一般的ではないな。
両方表とすることもできる。こちらは時々使うかな。
なるほどそういう決まりがあったんですね。
モデリングソフトの吐き出し方を調べてみますありがとう
glは反時計回りが標準だからソフト次第だな
シェーダの本を一通り読んだんですがほとんど理解できません
これは光と影の色の計算が膨大なためGPUにやらせるというのはわかりましたが
1点1点をfxの入力に渡してその点の色を計算させた後そのまま描画させるのが流れなんですか?
行列変換の命令とかあるんですが、データ丸ごと渡してアクションの動きの処理も全部GPUにやらせることができるんですか?
DirectInputでゲームパッドを使えるようにしようと思ってサンプルを参考に打ってたんだが、
static LPDIRECTINPUTDEVICE8 g_lpDIJoypad = NULL;で定義して使ってみようとしたら
((*(IUnknown*)(&*pDInput))).__vfptr CXX0017: エラーです: シンボル "pDInput" が見つかりません
と出たんだ。
一日原因調べたがさっぱりわからない、誰か助言してもらえないだろうか?;
開発環境はVS2005、DirectX SDK (November 2008) を使用してる。
971 :
デフォルトの名無しさん:2009/02/27(金) 18:37:51
頂点シェーダが頂点単位でやる処理で
ピクセルシェーダがポリゴンの面を塗る処理だ
よし理解はバッチリだな
972 :
デフォルトの名無しさん:2009/02/27(金) 18:54:11
>>970 動くサンプルを参考にしろよ
サンプルを参考に組んでる段階で動かないものをうごくようにするのは
経験者でもキツいときある
DirectXのサンプルは、元ソースからビルドして動かなくても、
サンプルのexeファイルが動けば問題ないんでしょうか?
ビルドして動いたほうがいいだろ
975 :
959:2009/02/27(金) 20:06:12
>>964 ありがとうございます。
2005を削除して新しく「Microsoft Visual C++ 2008 Express Edition」を入れました。
>>960さんのコード変更をしてリビルドしたら通りました。(いくつか警告は出ましたが。。。)
>>960さん、
>>964さん、ありがとうございました。
>>971 ぜんぜんわかりません
移動とか全部GPUでやれるってことですか?
つかめないんですが、移動したあとの計算結果の値をまたC++に戻して相互に処理できるんですか?
DirectXの本とか読めば描画の流れくらい書いてるだろ
まあテクスチャに出力させたりして無理やり値を得ることもできる
>>976 移動とかじゃなくて
3D空間にあるものを2Dのスクリーンに表示するには
ビデオカメラで撮影するみたいに単に撮ればいいってわけじゃなくて
頂点の位置が2Dにしたときにどの位置に見えるかってのをいちいち計算しないといけない
計算方法自体はすでに確立されていて難しいことはないんだけど
その計算を頂点シェーダーにやらせてしまおうって話
>>976 おいおい
だから落ち着いて考えろよ
@ローカル→Aワールド→Bカメラ→C射影→Dビューポート→Eシェーダ
で頂点と面の塗り処理はEだ
物体の移動は@とかAだろ
Eの処理をシェーダでやるんだ
移動といっても頂点の移動ならできる
ちなみに@〜Dがプログラム側(C++側?)の処理だ
計算結果をC++にもってくるのはできないだろ多分
できるような話もきいたことあるような気がするがとりあえずできないと思ってて
いーんじゃねぇの?
計算結果持って期待ならシェーダーでとっておくしかないんじゃね
移動ってエフェクトとかアニメーション変化するようなものに使うんですか?
相互やり取りできないとそれぐらいしかないですよね。しかも最初の状態に戻さないとどうなってるかもわからないんじゃGPUでの移動の状態で
C++側でプログラム分岐もできないですよね
GPUで処理させたデータ持ってこれるのかと思って変数登録、初期化した後は全部GPUでやるのかと思ってました
979に突っ込みたいが、その前にそろそろ次スレの心配をしようぜ。
よし、じゃあたててくる
ここって再利用だったんだな
>>981 >移動ってエフェクトとかアニメーション変化するようなものに使うんですか?
頂点の移動だよ
物体(メッシュ)の移動じゃないよ
スキニングとか
thxだいぶ見えてきました
つまりオブジェクトの移動はどうあがいてもCPUなのでソフト処理で勉強しても損はないんですね
いや、本にハードが対応していない場合ソフトで処理することになると書いてあったので最初からハードでいいじゃんとおもったんです
まず行列から勉強します。かげとか、反射が必要になってからシェーダですね
>>986 ばっかじゃね
そんな糞みたいな心配するよりさっさと組んでみろといいたい
こいつ触れてもいねぇのに無意味な質問しててすげーアホだな
興味ないならやめちゃえよ
梅
ウメ
Direct3DでGDIのPolygonをやる場合いい方法ありますか?
塗りつぶし方としてはWIDING指定の物と同じので構わないんですが、普通にスキャンラインごと
に左端右端を出していって、LINELISTとして描画以外に速い方法があると助かるんですが
DIBに出力したのをそのまま使えば?
ちょっとどう利点があるのか分からないんですが・・・あまり、詳しくないんで処理の簡単な説明お願いします。
>>990 多角形を三角形に分割すればいい。
まず交差している辺があれば、交点で分割する。
180度以下の角に隣接する2つの頂点に線を引いてみて、多角形を構成する
他の辺と交差していなければ、そこを三角形として分割する。
これを頂点が3つになるまで繰り返すだけ。
994 :
990:2009/03/01(日) 00:42:26
うー・・・ダメだ。いい方法が見つからない。どこかにGDIのPolygonの実装落ちてないですか?
毎フレームたくさん多角形を描くので軽い物じゃないとダメなんですが・・・
三角形分割は十分軽い処理だが。
そもそもDirectXの描画を理解してない悪寒
>>995うーん、やってみます。描画以外の処理が重いので、できるだけ軽い方がいいのですが・・・
>>996流石にそれは無い。
うめ
1000
1000000
1001 :
1001:
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。