1 名前:デフォルトの名無しさん mailto:ライシンマハケン [2008/07/17(木) 13:50:04 ] 1 名前:デフォルトの名無しさん[sage] 投稿日:2008/04/09(水) 09:55:56 ※回答する人も、質問する人も必ず読んでください これらに当てはまる人のための質問スレです。 1.C/C++は多少理解している。 2.最近DirectXを始めたばかり 3.SDKを見ても、Googleで検索しても、いまいち理解できない人 4.余計な雑談は不要ですよ 【 回答してくださる方 】 ・ できるだけ優しく質問に答えてあげてください。 ・ 優しく教えるのが嫌でしたら、解決するためのヒントだけでも結構です。 「ググれ」「SDK見れ」以外の回答でおながいします。 ・ 神ですら理解不能な質問は無視して下さい。 【 質問する方 】 ・ どんな事で躓いているのか明確にしよう。 ・ 長くならないなら躓いている部分のコードを晒してみれ。 ・ 解決した場合、お礼を言うのは当然だが、何をどうしたら解決したかを明確に書こう。 ・ 回答して貰ったら、出来るだけお礼もしよう。 【C++】 DirectX初心者質問スレ Part17 【C】 pc11.2ch.net/test/read.cgi/tech/1207702556/
543 名前:デフォルトの名無しさん [2008/09/29(月) 23:18:37 ] >>541 すみません。 ZENABLE=FALSE の時には正しく描画されているように見えます。 ただ、1つ1つの三角形を個別にレンダリングしたような感じになっ てしまいます。(陰影などが全く反映されません) よろしくお願いします。
544 名前:デフォルトの名無しさん mailto:sage [2008/09/29(月) 23:47:55 ] それは、テクスチャが貼れてないだけ? ポリゴン自体は描けてる? Zバッファのクリアをミスってるとか
545 名前:デフォルトの名無しさん mailto:sage [2008/09/29(月) 23:51:19 ] 法線がないようだが、ライティングはオフにしてる?
546 名前:デフォルトの名無しさん [2008/09/29(月) 23:57:28 ] >>544 >>545 ありがとうございます。 はい、テクスチャがうまく描画されないだけみたいです。 Zバッファのクリアはとくにしていないのですが、どうやれば 良いでしょうか? はい、ライティングは無効にしてあります。 SetRenderState( D3DRS_CULLMODE, D3DCULL_NONE ); SetRenderState( D3DRS_LIGHTING, FALSE ); SetRenderState( D3DRS_ZENABLE, TRUE ); SetRenderState( D3DRS_ZFUNC, D3DCMP_LESSEQUAL ); SetRenderState( D3DRS_ZWRITEENABLE, TRUE ); SetRenderState( D3DRS_ALPHATESTENABLE, FALSE ); SetRenderState( D3DRS_SPECULARENABLE, FALSE ); SetRenderState( D3DRS_DITHERENABLE, FALSE ); SetRenderState( D3DRS_FOGENABLE, FALSE ); SetRenderState( D3DRS_SPECULARENABLE, FALSE ); SetRenderState( D3DRS_RANGEFOGENABLE, FALSE ); SetRenderState( D3DRS_STENCILENABLE, FALSE ); よろしくお願いします。
547 名前:デフォルトの名無しさん [2008/09/30(火) 00:10:28 ] >>544 >>545 ありがとうございます 動きました! Zバッファをクリアする必要があることを知りませんでした。。。orz... 本当にありがとうございました。
548 名前:デフォルトの名無しさん [2008/09/30(火) 13:02:49 ] すごく初歩的な質問で恥ずかしいのですが・・・ DirectXで3Dゲームを作る場合、3Dグラフィクス自体は(キャラクターのモーションなど)専用のグラフィックツールで作ると言う形なのでしょうか?
549 名前:デフォルトの名無しさん mailto:sage [2008/09/30(火) 13:09:52 ] あ・た・り・ま・え
550 名前:デフォルトの名無しさん mailto:sage [2008/09/30(火) 17:44:47 ] 1>gamemain.cpp 1>c:\documents and settings\^^^^^^\デスクトップ\src\test90walking\test1\../../class/classlib.h(70) : fatal error C1083: include ファイルを開けません。'dpaddr.h': No such file or directory これと同じエラーが20個もでてコンパイルできないのですがどう対処すればいいのでしょうか・・・? 3Dリアルタイムアニメーションという書籍のサンプルです。
551 名前:550 mailto:sage [2008/09/30(火) 17:45:25 ] dpaddrというヘッダファイルがどこにもなくて・・・。
552 名前:デフォルトの名無しさん mailto:sage [2008/09/30(火) 17:56:38 ] DirectX SDK には以下のコンポーネントは含まれなくなりました。 Direct3D 8 とそれ以前のすべてのバージョン Direct3D RM DirectAnimation DirectMusic DirectInput7 およびそれ以前のすべてのバージョン DirectPlay DirectPlayVoice DirectX 8 時代の HRESULT 変換ルーチン Managed DirectX サンプルとドキュメント これらのコンポーネントをご利用になりたいデベロッパーは、MSDN から入手可能な August 2007 DirectX SDK をダウンロードする必要があります。
553 名前:デフォルトの名無しさん mailto:sage [2008/09/30(火) 17:56:48 ] DirectPlay関連のヘッダーだろ DirectX8のSDKにあるんじゃないかな。
554 名前:デフォルトの名無しさん mailto:sage [2008/09/30(火) 18:09:13 ] ありがとうございます インストールしてみます
555 名前:デフォルトの名無しさん mailto:sage [2008/09/30(火) 22:17:42 ] BCCでDirectXを使うにはどうすればいいんですか?
556 名前:デフォルトの名無しさん mailto:sage [2008/09/30(火) 22:20:24 ] SDK入れよう
557 名前:デフォルトの名無しさん mailto:sage [2008/10/01(水) 00:45:19 ] >>548 に便乗して質問。 どんなグラフィックソフト使ってる?
558 名前:デフォルトの名無しさん mailto:sage [2008/10/01(水) 07:37:30 ] 3DS MAX
559 名前:デフォルトの名無しさん mailto:sage [2008/10/01(水) 08:36:05 ] うらやましい限りだぜ 俺はBlender
560 名前:デフォルトの名無しさん [2008/10/01(水) 09:14:54 ] Mayaってどうなんだろ
561 名前:デフォルトの名無しさん mailto:sage [2008/10/01(水) 09:39:52 ] この手のツールは無料から始めたほうがよさげ。 使い切れずに放り投げるには高すぎるからなw
562 名前:デフォルトの名無しさん mailto:sage [2008/10/01(水) 09:50:07 ] 金があったら ZBrush+3DSMAXが最強な希ガス
563 名前:デフォルトの名無しさん mailto:sage [2008/10/01(水) 10:30:15 ] 俺はMikuMikuDance
564 名前:デフォルトの名無しさん mailto:sage [2008/10/01(水) 10:35:51 ] MAXの無料版ってもう無いの?
565 名前:デフォルトの名無しさん mailto:sage [2008/10/01(水) 10:42:11 ] 先日買った書籍に3Dリアルタイムアニメーションというのがあるのですが。 LightWaveで作ったアニメーションをUViewで読み込んでOBJ形式で描きだして DirectXで読み込む方法を使っているのですがUViewは現在販売していないらしく 他のソフトで代用して欲しいと最後に筆者が記述していたのですが 他のソフトってどんな物があるのですか? 何個か教えてもらえたら嬉しいです!
566 名前:デフォルトの名無しさん mailto:sage [2008/10/01(水) 11:41:51 ] obj形式なら普通にエクスポート出来ると思うが? じゃなくてOBJ形式をXファイルに変換とか? 何れにしてもLightWaveの標準機能で出来た希ガス
567 名前:デフォルトの名無しさん mailto:sage [2008/10/02(木) 10:46:19 ] ID3DXEffectを使用した場合、シェーダのグローバル変数の共有や、ステートの一括変更などが可能ですが これらの処理をID3DXEffectを使用しないで自前で実装することは可能でしょうか? リファレンスを見ているのですが、変数を共有する方法は全く見当たりませんし ステートブロックを自前で管理したとしても、API呼び出しは回数は減らせないですよね? ID3DXEffectを使用しないという人は結構いると思うのですが、この辺はどうやって解決しているんでしょうか・・・ 宜しくお願いしますm(_ _)m
568 名前:567 mailto:sage [2008/10/02(木) 10:51:24 ] すみません、ステートブロックに関してはIDirect3DStateBlock9が使えることが分かりました これに関しては何とかなりそうです。
569 名前:デフォルトの名無しさん [2008/10/02(木) 11:06:45 ] 俺はMayaかってしまった。マジすごいなこれ。
570 名前:デフォルトの名無しさん mailto:sage [2008/10/02(木) 12:05:45 ] ブルジョワジーめ
571 名前:デフォルトの名無しさん [2008/10/02(木) 16:20:40 ] August 2007のDirectX SDKを入れていますが、IA64のライブラリがついていません。 付属してるバージョンのSDKを知ってる方はいませんか?
572 名前:デフォルトの名無しさん mailto:sage [2008/10/02(木) 16:34:22 ] うああああああ シェーダー定数の共有のさせ方わっかんねーwww 燃えてきたぜ
573 名前:567 mailto:sage [2008/10/02(木) 17:22:54 ] 結局sharedキーワードでうまく共有する方法は分からないが レジスタを直接指定すれば共有できることは分かった 取りあえずこれでいこうと思います。もっといい方法があったら教えていただけると助かりますm(_ _)m
574 名前:デフォルトの名無しさん mailto:sage [2008/10/02(木) 22:51:57 ] >>573 1、ID3DXEffectPoolオブジェクトを作成(D3DXCreateEffectPoolを使用) 2、sharedをつけた変数を宣言したFXファイルを作成 3、共有したいFXファイル全てに2のFXファイルをインクルード 4、3のFXファイルをコンパイル時、D3DXCreateEffectに1のID3DXEffectPoolオブジェクトを引数で渡す。
575 名前:デフォルトの名無しさん mailto:sage [2008/10/02(木) 22:59:03 ] ん? ID3DXEffectを使わないで変数の共有をしたいって言ってるのか? そりゃー、逆アセンブルしてD3DXがどう解決しているか確認してみりゃいいんじゃね まーEffectPoolなんて使ってる以上、力技だろってのは想像がつくがな
576 名前:デフォルトの名無しさん mailto:sage [2008/10/02(木) 23:04:30 ] 単純に変数を一時的にEffectPoolに入れておいてるだけで、 結局描画時に全部毎回マッチングしてレジスタに設定してるんじゃ無いっけ? あくまでユーザー側からは同じ変数のように見えているだけで。
577 名前:デフォルトの名無しさん mailto:sage [2008/10/03(金) 08:32:57 ] >>576 マジすかw だとしたら効率的には何の意味もないんだな^^;
578 名前:デフォルトの名無しさん mailto:sage [2008/10/03(金) 10:58:52 ] 頂点シェーダーにハードウェア対応していないグラフィックカードでは 頂点処理はCPUで実行されると思いますが、その場合に D3DPOOL_DEFAULTを指定して作成したっ頂点データは システムメモリ上に配置される可能性が高いんでしょうか? システムメモリ上に配置されるということはレンダリングの度にシステムメモリから ビデオカードへのデータ転送が発生しているのでしょうか?
579 名前:デフォルトの名無しさん mailto:sage [2008/10/03(金) 13:08:38 ] >>576 そういえば、頂点シェーダー(VS)とピクセルシェーダ(PS)を別々にビルドしてセットする場合って、 VSとPSそれぞれの定数テーブルに値をセットする必要があると思うけど (VSとPSでレジスタ空間が違うからなのか?違うよね?) この辺もD3DXEffect系使った時って意識しないから、やっぱD3DXEffect系は内部でいろいろやってるのか…
580 名前:デフォルトの名無しさん mailto:sage [2008/10/03(金) 20:26:43 ] 1>.\MapModel.cpp(622) : error C2065: 'DXFILEFORMAT_BINARY' : 定義されていない識別子です 最後にこのエラーだけ解決できません・・・。 対処方法を教えていただけませんか?
581 名前:デフォルトの名無しさん mailto:sage [2008/10/03(金) 20:32:44 ] >>578 頂点変換をハードウェアで対応してなければ システムメモリから転送するしかない。 RadeonHD3450が5000円で買えるんだから 素直にDirectX10対応のビデオカード買えばいい。 >>579 かといって自分で全部管理した方が速くなるのか?という話になると どちらかといえば遅くなるだろうから素直にID3DXEffect使う方がいい。 すでにDirectX10ではそれしかないし。
582 名前:580 mailto:sage [2008/10/03(金) 20:37:52 ] if (FAILED(D3DXSaveMeshToX(name, pMesh, NULL, material, NULL, 3, DXFILEFORMAT_BINARY))) return false; return true; } コードです
583 名前:デフォルトの名無しさん mailto:sage [2008/10/03(金) 20:55:18 ] >>582 使ってるSDKが新しすぎるんじゃね? よく分からんわ
584 名前:デフォルトの名無しさん mailto:sage [2008/10/03(金) 22:28:42 ] >>580 それは、dxfile.hに定義がある。 使いたければ、includeしろ。 てか、それ間違ってるんで #include <d3dx9xof.h> を追加して D3DXF_FILEFORMAT_BINARYを使え。
585 名前:デフォルトの名無しさん mailto:sage [2008/10/03(金) 22:33:51 ] おまいらどうやってDirectX勉強したの? 独学?
586 名前:デフォルトの名無しさん mailto:sage [2008/10/03(金) 22:45:02 ] 独学
587 名前:デフォルトの名無しさん mailto:sage [2008/10/03(金) 23:00:30 ] すっげー
588 名前:デフォルトの名無しさん mailto:sage [2008/10/03(金) 23:05:32 ] 俺はDirectX5の頃からだぞ、なめんな あと歳は聞くな
589 名前:デフォルトの名無しさん mailto:sage [2008/10/03(金) 23:13:15 ] WinGから じじい言うな
590 名前:デフォルトの名無しさん mailto:sage [2008/10/04(土) 00:11:11 ] d3dx9_xx.dllにはいろんなバージョンがありますが、ロードするのは一番数字が大きいものでいいのでしょうか。 それとも、各バージョンごとで互換性が低いのでしょうか。
591 名前:デフォルトの名無しさん mailto:sage [2008/10/04(土) 01:15:57 ] つかってるSDKによって勝手に対応するバージョンのものが呼ばれる
592 名前:デフォルトの名無しさん mailto:sage [2008/10/04(土) 01:23:05 ] それはd3dx9.libをリンクしていたらってことですよね。 友達にプログラムを渡したら二人が二人ともd3dx9_xx.dllがないとエラーが出るといっていたので、 とりあえず一番に、最新のDirectXを入れるように言ったのですが、 プログラム側で選択してもよいものなのかと疑問に思ったのです。
593 名前:デフォルトの名無しさん mailto:sage [2008/10/04(土) 01:28:19 ] >>592 >プログラム側で選択してもよいものなのかと疑問に思ったのです。 それをやれるだけのスキルがあるならやればいいと思うけど、 「やってみたいんですけどうまくいきません」というのならやるなと言いたい。
594 名前:デフォルトの名無しさん mailto:sage [2008/10/04(土) 01:31:04 ] >>592 Web Installerで全部のd3dx9_xx.dllをインストールしてくれるから、これ実行してもらうといいよ。 www.microsoft.com/downloads/details.aspx?familyid=2da43d38-db71-4c1b-bc6a-9b6652cd92a3&displaylang=ja
595 名前:デフォルトの名無しさん mailto:sage [2008/10/04(土) 01:37:51 ] ということは少なからず差異があるようですね。 >>594 のページを教えて、インストールさせようと思います。 ありがとうございました。
596 名前:デフォルトの名無しさん mailto:sage [2008/10/04(土) 05:27:32 ] Direct3D 9 Driver Development Kitなんて何処にあるんだ・・・?
597 名前:デフォルトの名無しさん mailto:sage [2008/10/04(土) 07:23:51 ] ぶっちゃけ 自分のPCにはいってる一番番号の大きいdllを exeと同じフォルダに入れて渡せば動くよ
598 名前:デフォルトの名無しさん mailto:sage [2008/10/04(土) 10:49:32 ] >>588 WinG〜GameSDK
599 名前:デフォルトの名無しさん mailto:sage [2008/10/04(土) 13:29:21 ] typedef struct _D3DLVERTEX { D3DXVECTOR3 pos; D3DCOLOR color; D3DCOLOR specular; D3DVALUE tu; D3DVALUE tv; } D3DLVERTEX, *LPD3DLVERTEX; #define D3DFVF_LVERTEX (D3DFVF_XYZ | D3DFVF_DIFFUSE | D3DFVF_SPECULAR | D3DFVF_TEX1) _D3DLVERTEX についている_の意味ってなんですか?
600 名前:デフォルトの名無しさん mailto:sage [2008/10/04(土) 13:44:02 ] 別にそこで使った名前は他で使わないから適当でううんだけど よそと名前がぶつかったら困るでしょ。 そのために自分たちだけで決めたルール
601 名前:デフォルトの名無しさん mailto:sage [2008/10/04(土) 14:30:43 ] なるほど そういうことですか ありがとうございjます
602 名前:デフォルトの名無しさん mailto:sage [2008/10/04(土) 22:58:01 ] おしえてください。 ウィンドウサイズの変更イベント OnSize() の中で、 Reset() を使っているのですが、D3DERR_INVALIDCALL というエラーが出て先に進めなくてこまっています。orz... D3DPRESENT_PARAMETER の中身は、 BackBufferWidth 0 BackBufferHeight 0 BackBufferFormat D3DFMT_X8R8G8B8 BackBufferCount 0 MultiSampleType D3DMULTISAMPLE_NONE MultiSampleQuality 0 SwapEffect D3DSWAPEFFECT_DISCARD hDeviceWindow = GetSafeHwnd() で取得したハンドル Windowed 1 EnableAutoDepthStencil 1 AutoDepthStencilFormat D3DFMT_D16 Flags 0 FullScreen_RefreshRateInHz 0 PresentationInterval 0 です。 よろしくお願いします m(_ _)m
603 名前:デフォルトの名無しさん mailto:sage [2008/10/04(土) 23:02:45 ] ウィンドウハンドルがNULLとか
604 名前:デフォルトの名無しさん mailto:sage [2008/10/04(土) 23:23:42 ] >>603 ありがとうございます。 D3DERR_INVALIDCALLが発生する原因がわかりました。 リソースをD3DPOOL_DEFAULTで確保するとダメみたいです。 OnSize() でウィンドウサイズを可変した時に3D画像のアスペクト比が 変わってしまうのを防ぎたかったのですが、Resetを呼び出してもダメ みたいです。 アスペクト比を固定するにはどのようにすれば良いでしょうか? よろしくお願いします。
605 名前:デフォルトの名無しさん mailto:sage [2008/10/04(土) 23:32:34 ] D3DPOOL_DEFAULTで作成したリソースをいったん削除してからデバイスをリセットして、その後でリソースを作り直す。
606 名前:デフォルトの名無しさん [2008/10/04(土) 23:39:07 ] >>605 ありがとうございます。 早速ためしてみます。
607 名前:デフォルトの名無しさん mailto:sage [2008/10/04(土) 23:41:30 ] >>604 何がしたいのかわからないんだが ウインドウサイズが変わった時点で 変更後のサイズからアス比を再計算して 射影行列を作る時に指定しているアス比を変更するだけじゃだめなのか? D3DXMatrixPerspectiveFovLHとかの話 ついでに流れ的に関係あるようでないような質問 テクスチャとかメッシュとかはパフォーマンス的には置いといて デバイスのロストを気にしなくても良い様にできるけど ID3DXEffectだけは対応しなくちゃいけない感じなんだが これって何かの設定で対応しなくて良いようにできるものなの?
608 名前:デフォルトの名無しさん mailto:sage [2008/10/04(土) 23:50:09 ] >>607 バックバッファの大きさは変わらないんだからぼんやりしちゃうだろ
609 名前:デフォルトの名無しさん mailto:sage [2008/10/05(日) 00:23:15 ] デフォルトのバックバッファを使わないで、 後から確保した物を使えばリセットする必要性は皆無
610 名前:デフォルトの名無しさん mailto:sage [2008/10/05(日) 00:48:32 ] >>607 ID3DXEffectの仕様として管理下はサポートされていないので それは無理だろ。 ただ、ロスト対応が必要な理由として、シェーダ引数のテクスチャと ステートブロックがあるからだろうと考えられるので エフェクトに渡すテクスチャは管理下のみ、 pass内でステートの変更はしない、ステートブロックは使わない、などの 対策をすれば、大丈夫になるかもね。
611 名前:デフォルトの名無しさん mailto:sage [2008/10/05(日) 00:51:57 ] マルチディスプレイで WindowモードのWindowを他方のWindowへ移動すると presentが遅くなるのはどうしようも無いですか?
612 名前:デフォルトの名無しさん mailto:sage [2008/10/07(火) 16:03:48 ] VOID DrawText(ID3DXFont* pFont, char* text, DWORD x, DWORD y, D3DCOLOR Color) { RECT Rect; SetRect(&Rect, x, y, CW_USEDEFAULT, CW_USEDEFAULT); pFont->DrawTextA(text, -1, &Rect, DT_LEFT | DT_NOCLIP, Color); } の pFont->DrawTextA(text, -1, &Rect, DT_LEFT | DT_NOCLIP, Color); この部分で error C2660: 'ID3DXFont::DrawTextA' : 関数に 5 個の引数を指定できません。 と言うエラーが出てしまいます 自力で調べた所DirectX SDKの仕様が変わったためにコンパイルできないらしいと言うところまではわかったんですが どのように書き直せば良いのかわかりません どのように直せば良いのでしょうか ちなみにSDKはaugust 2007です よろしくお願いします
613 名前:デフォルトの名無しさん mailto:sage [2008/10/07(火) 16:14:53 ] 第一引数にD3DXSPRITEを渡さないとダメ 最新のSDKのマニュアルとサンプルを見るべし
614 名前:612 mailto:sage [2008/10/08(水) 14:40:09 ] ありがとうございました やってみます
615 名前:デフォルトの名無しさん [2008/10/08(水) 15:35:55 ] これからDirectXをまなぼうと思っています ゲームをつくりながら解説していくようなサイトを探しています オススメがありましたら教えてください C++とWINAPIの基本は理解しています
616 名前:デフォルトの名無しさん mailto:sage [2008/10/08(水) 15:36:41 ] age失礼しました
617 名前:デフォルトの名無しさん mailto:sage [2008/10/08(水) 16:12:12 ] DirectInputで作成したマウスデバイスで、強調レベルを非排他に設定したときだけAquireメソッドが成功しません。 どういうときに失敗するのでしょうか。
618 名前:デフォルトの名無しさん mailto:sage [2008/10/08(水) 18:39:17 ] >>617 Aquireは排他制御のためのメソッドだから、非排他設定なら必要ないだろう。
619 名前:617 mailto:sage [2008/10/08(水) 21:22:12 ] どんなサイトの解説を見ても、必ずAcquireメソッドをよんでるんですが・・・ 少なくともサイトの管理人の環境では、実行できてるってことですよね?
620 名前:デフォルトの名無しさん mailto:sage [2008/10/08(水) 21:40:22 ] >>619 Acquireを呼んでいるのと、Acquireが成功するかは別問題。 MSのサンプルだってAcquireは呼んでいる。 でも、それが成功したかなんて気にしていない。
621 名前:617 mailto:sage [2008/10/08(水) 21:54:33 ] 日本語版のMSDNでようやく該当する記述を見つけました。 Acquireの戻り値として、 >DIERR_OTHERAPPHASPRIO 他のアプリケーションの優先レベルの方が高いので、この呼び出しを実行できない。 >この値は、標準の COM 戻り値である E_ACCESSDENIED に等しい。このエラーが返されるのは、 >デバイスに対するアプリケーションのアクセス権がフォアグラウンド アクセス権であるにもかかわらず、 >バックグラウンドであるときにデバイスを取得しようとした場合である。 とありました。WM_CREATEの処理内で呼び出していたために失敗していたようです。 大変お騒がせしました。まさか日本語ページの方が詳しいなんて・・・
622 名前:デフォルトの名無しさん mailto:sage [2008/10/09(木) 00:11:47 ] DirectSoundはDirextX8も9も一緒なんですか? DirectSoundCreate8からDirectSoundCreate9になるのかと思ったんですがないといわれます。 ライブラリの追加はdsound.lib dxguid.lib winmm.lib だけでいいんですか?
623 名前:デフォルトの名無しさん mailto:sage [2008/10/09(木) 02:15:01 ] 質問です。 DirectXで作られたゲームを公開する場合、マイクロソフトの著作権表記などは 必要なのでしょうか? ttp://www.microsoft.com/japan/msdn/directx/japan/license/eula.aspx ttp://www.microsoft.com/japan/msdn/directx/japan/license/dx_license.aspx 一応上を読んでみたのですが、ごちゃごちゃ書いてあって正直よくわかりません。
624 名前:デフォルトの名無しさん mailto:sage [2008/10/09(木) 08:26:40 ] >>622 dsound.hの中を見ればわかるよ DIRECTSOUND_VERSION >= 0x0800 なので8も9も同じ libはそれでいいんじゃない 未解決とか言われたら追加すればいい
625 名前:デフォルトの名無しさん mailto:sage [2008/10/09(木) 10:12:20 ] 質問です DirectX8で作られた古いソースが出てきたのですが、現在PCには9.0cのSDKが入っています。 上記ソースをコンパイルしようとしたところ #include <d3d8.h> #include <d3dx8.h> こいつらがないと言われてしまったのですが、DirectX8のSDKをインストールしないとダメってことでしょうか。 (普段は9のプログラムを組んでいるので)競合しそうで怖いのですが、何か良い手はありますでしょうか
626 名前:デフォルトの名無しさん mailto:sage [2008/10/09(木) 10:19:36 ] 俺も場合は複数バージョンのSDKをインストールしないで解凍して保管する で、includeやlibは新しいバージョンを優先しとけばないものだけ古いものから参照される
627 名前:デフォルトの名無しさん mailto:sage [2008/10/09(木) 12:46:20 ] >>625 >>552
628 名前:デフォルトの名無しさん mailto:sage [2008/10/09(木) 13:06:39 ] >>625 オプションのVC++ディレクトリを C:\Program Files\Microsoft DirectX SDK (March 2008)\Include C:\Program Files\Microsoft DirectX SDK (August 2007)\Include ・ ・ こんな感じにしてるが心配ならDX8のときは順番を入れ替えればいいんじゃない
629 名前:デフォルトの名無しさん mailto:sage [2008/10/09(木) 15:14:18 ] DirectInputのマウスデバイスで相対座標のデータを得るとき、値1が1pxと対応しているわけではないと思うのですが、 どうやってピクセル単位の座標変化を求めればいいでしょうか。
630 名前:デフォルトの名無しさん mailto:sage [2008/10/09(木) 15:59:32 ] 対応してた気がするが?
631 名前:デフォルトの名無しさん mailto:sage [2008/10/09(木) 16:09:01 ] 629 つまりプログラムのミスですか。確認してみますorz
632 名前:デフォルトの名無しさん mailto:sage [2008/10/09(木) 17:09:17 ] サウンドバッファはプライマリとセカンダリ両方作る必要はあるんですか?サンプルを見たんですが、2つ作ってるのにセカンダリしかつかってないように見えるんですが
633 名前:629 mailto:sage [2008/10/09(木) 19:43:32 ] やっぱりどうしても、実際のカーソルの位置と、DirectInputで求めたカーソル移動量が食い違います。 スクリーン上で1000px水平に移動させると、移動量の合計が600〜800くらいになっています。 下がそのコードなのですが、どこか間違っているところがありますか? void MouseDevice::UpdateState() { HRESULT hr; if (hr = pDevice_->Acquire(), FAILED(hr)) { LOG_WARN("IDirectInputDevice8::Acquire 非アクティブになった?"); return; } DIMOUSESTATE mouseState; if (hr = pDevice_->GetDeviceState(sizeof(mouseState), &mouseState), FAILED(hr)) { LOG_ERROR("IDirectInput8::GetDeviceState"); return; } cursorPos_.x = clamp(cursorPos_.x + mouseState.lX, 0L, 1279L); cursorPos_.y = clamp(cursorPos_.y + mouseState.lY, 0L, 1023L); //SetCursorPos(cursorPos_.x, cursorPos_.y); POINT pt; GetCursorPos(&pt); std::stringstream ss; ss << "MOUSE " << cursorPos_.x << "," << cursorPos_.y << " (" << pt.x << "," << pt.y << ")"; LOG_INFO(ss.str().c_str()); }
634 名前:デフォルトの名無しさん mailto:sage [2008/10/09(木) 20:07:33 ] >>633 関係ないけど ,演算子をそんな風に使う人は初めて見た
635 名前:デフォルトの名無しさん mailto:sage [2008/10/09(木) 20:10:37 ] WAVEFORMATEX構造体のnSamplesPerSecに値がはいらないんですが、どうしてですか? WAVEFORMATEX FEX; ZeroMemory(&FEX, sizeof(WAVEFORMATEX)); FEX.nSamplesPerSec = 44100; ここで変数をみても44100が入ってなくて0なんですけど
636 名前:デフォルトの名無しさん mailto:sage [2008/10/09(木) 20:12:16 ] >>633 試してないのでわからんけど、マウスカーソルの加速の分がずれてるとか・・・?
637 名前:デフォルトの名無しさん mailto:sage [2008/10/09(木) 20:25:37 ] >>636 ありがとうございます。「directinput マウス 加速」で検索したら解決しました。 DirectInputではマウスドライバから直接データを得るので、ウィンドウズのカーソルを意識するアプリケーションは Win32関数かメッセージを使うように書いてありました。
638 名前:デフォルトの名無しさん mailto:sage [2008/10/09(木) 20:30:29 ] //ローカル回転&ワールド移動 >> ワールド変換行列設定 // //角度はRAD HRESULT CDXDevice::SetWorldTransformLW(D3DVECTOR &l_rot, D3DVECTOR &w_trans, int index) { D3DXMATRIX mat,mat2; D3DXMatrixIdentity(&mat); if (l_rot.x) { D3DXMatrixRotationX(&mat2, l_rot.x); D3DXMatrixMultiply( &mat, &mat, &mat2); } if (l_rot.z) { D3DXMatrixRotationZ(&mat2, l_rot.z); D3DXMatrixMultiply( &mat, &mat, &mat2); } if (l_rot.y) { D3DXMatrixRotationY(&mat2, l_rot.y); D3DXMatrixMultiply( &mat, &mat, &mat2); } D3DXMatrixTranslation( &mat2, w_trans.x, w_trans.y, w_trans.z); D3DXMatrixMultiply( &mat, &mat, &mat2); return SetWorldTransform( &mat, index); } 行列を掛ける順番って x z yなんですか?
639 名前:デフォルトの名無しさん mailto:sage [2008/10/09(木) 20:36:35 ] 望む結果に応じて好きな順序で掛ければ良い
640 名前:デフォルトの名無しさん mailto:sage [2008/10/09(木) 21:37:53 ] どなたか>>623 の質問に答えられる人はいませんか?
641 名前:デフォルトの名無しさん mailto:sage [2008/10/09(木) 23:19:49 ] DIRECTXで描画をしながら、Windowsのテキストボックスなどを表示したいのですが どのような方法がありますでしょうか? 普通にウィンドウにコントロールを作成するだけでは DIRECTX側のpresentで上書きされてしまい、表示することができません。 ウィンドウモードならば、ウィンドウ作成時にWS_CLIPCHILDRENを指定することで テキストボックスを部分のみをクリッピングすることができたのですが フルスクリーンモードでは、当然上書きされてしまいます。 フルスクリーンモードでも通用する、何か良い方法はありませんでしょうか?
642 名前:デフォルトの名無しさん mailto:sage [2008/10/09(木) 23:25:12 ] GXUT custom UI
643 名前:デフォルトの名無しさん mailto:sage [2008/10/10(金) 00:00:03 ] ニセフルスクリーンモードにする