1 名前:デフォルトの名無しさん mailto:sage [2011/10/19(水) 22:47:45.95 ] 回答する人も、質問する人も必ず読んでください これらに当てはまる人のための質問スレです。 1.C/C++は多少理解している。 2.最近DirectXを始めたばかり 3.SDKを見ても、Googleで検索しても、いまいち理解できない人 4.余計な雑談は不要ですよ 【 回答してくださる方 】 ・ できるだけ優しく質問に答えてあげてください。 ・ 優しく教えるのが嫌でしたら、解決するためのヒントだけでも結構です。 「ググれ」「SDK見れ」以外の回答でおながいします。 ・ 神ですら理解不能な質問は無視して下さい。 【 質問する方 】 ・ どんな事で躓いているのか明確にしよう。 ・ 長くならないなら躓いている部分のコードを晒してみれ。 ・ 解決した場合、お礼を言うのは当然だが、何をどうしたら解決したかを明確に書こう。 ・ 回答して貰ったら、出来るだけお礼もしよう。 現在の最新バージョンはDirectX 11です。 前スレ 【C++】 DirectX初心者質問スレ Part35 【C】 hibari.2ch.net/test/read.cgi/tech/1305885376/
888 名前:デフォルトの名無しさん mailto:sage [2012/04/20(金) 01:00:29.65 ] MMDの場合、MMEを見ればわかると思うが頂点のスキニングはCPUでやって スキニング済みの頂点をGPUに送りそこでワールドビュープロジェクション変換してる MMMの場合はサンプルのfxmを見る限りGPUでのスキニングでvs_3_0と書いてあるのでその制限の中でやっているのだろう とりあえずシェーダーのセットアップが必要なマテリアル単位で 使っているマトリクス(ボーン)数だけを送ることになるんだろうけど もちろんそれでも想定したレジスタ数を超えることがあるので それが超えないようにプリミティブを分けて複数回の転送&描画が必要になる。 この分け方はまぁ自分で考えて。 例に出てる頂点宣言のORIGINAL_VERTEXだけど プリミティブを分ける以上 隣り合った三角形が必ず同じ描画になるというわけないので 一つの頂点に indexInShader が一つにするのは至難の業になるかもしれず。 じゃぁブレンドインデクスはストリーム分けてってのはかなりのメモリが無駄になるような気もするので 分けた後の描画数分のVertexBufferとIndexBufferおよび Matrixの元インデックス→シェーダーに送るインデックステーブルを生成するのが手っ取り早いと思う 頂点モーフやUVモーフがあるので生成した頂点に元の頂点インデックスを知る手段もなにかしらで生成。 でindexInShaderだけどどうせ256以内に収めるんだしD3DDECLTYPE_UBYTE4のunsigned char indexInShader[4]でいいんじゃないかな? [4]って書いたのは.pmxのBDEF4のため。 SDEFをやるならVECTOR3のC、R0、R1も追加。 あとスキニングなら回転(拡縮)と移動だけなので転置して1列削れば floatの数が12個なので1ボーンあたり3レジスタ分でいけてお得
889 名前:デフォルトの名無しさん mailto:sage [2012/04/20(金) 20:02:36.13 ] >>888 規制がされてるので携帯から失礼します。 うーん、難しい レス有り難う御座います original_vertexは元のインデックスをC+側クラスで保存しときます あー表情のプログラムのことモーフっていうのか 並べ替えたら破綻する可能性、全く考慮してませんでした。 とりあえずはC側では実装出来てるので、またあとで実装してみたいと思います。 PMXは色々機能有るんですね、クォータニオンの補間がBDEF2の場合しか上手くいかず、拡張し難い実装した気がしますw
890 名前:デフォルトの名無しさん mailto:sage [2012/04/20(金) 20:08:15.08 ] 続けて失礼します unsigned charにします D3DDECLTYPE_USHORT2がない理由がわかりました。 そんなにレジスタないからですね。 groupId : material0 での三角形単位の使用ボーンインデックス 0 : ( 9, 40, ) 1 : ( 9, 72, ) 2 : ( 20, 23, ) 3 : ( 41, 42, ) 4 : ( 73, 74, ) 5 : ( 136, ) material0 内で使用したボーン. 9, 20, 23, 40, 41, 42, 72, 73, 74, 136,
891 名前:デフォルトの名無しさん mailto:sage [2012/04/20(金) 20:08:54.92 ] material0でのグループ分け開始 indexBufferのindex : groupId index 0: 4 index 3: 4 : : index 429: 4 index 432: 3 : : index 861: 3 index 864: 1 : : index 1059: 1 index 1062: 0 index 1257: 0 index 1260: 5 index 1833: 5 index 1836: 2 index 2073: 2 index 2076: 5 index 2121: 5 index 2124: 2 index 2241: 2 index 2244: 5 省略 とりあえず、ここまで進みました。わかりにくいと思いますが… ここからIndexBufferを並べ替えてやろうかなーとか思ってます。 また、何かありましたらよろしくお願いします。
892 名前:デフォルトの名無しさん mailto:sage [2012/04/23(月) 03:48:20.81 ] WindowProcとMainWndProcの違いって何でしょうか? もう何がなんだか分からない…
893 名前:デフォルトの名無しさん mailto:sage [2012/04/23(月) 13:42:14.99 ] Win32SDKのみの環境ならWNDCLASSEXのlpfnWndProcで設定された名前だから なんでもいいんじゃない?どっちでも一緒かと その他別のライブラリとかのコールバック関数なら知らない
894 名前:デフォルトの名無しさん mailto:sage [2012/04/28(土) 09:18:34.85 ] 複数のモデルが同じテクスチャを参照している場合は、 VRAMに送られるテクスチャの実体って一つなんですか? たとえば3Dソフトなどで木のモデルを自動生成した(頂点の個数や座標は個々に違う)場合とかどうなるんでしょうか
895 名前:デフォルトの名無しさん mailto:sage [2012/04/28(土) 16:11:19.72 ] Release()とGMA500について質問です DirectX7以前に作られたゲームを Win7とGMA500の機種でプレイすると if (xxx) xxx->Release(); で 必ず落ちることがわかりました それもDirect3DDeviceなど GPUに関するインターフェイスだけです igdumd32.dllでエラーが出てるので インテル最新の8.14.10.2030にしましたが 結果は同じです 同じ機種にXPだと問題ないですし GMA3000など他の環境でWin7でも 問題なく動いてます 互換性の問題で古いDirectXで ビルドする必要があります これは相性の悪い組み合わせとして 諦めるしかないのでしょうか?
896 名前:デフォルトの名無しさん mailto:sage [2012/04/29(日) 01:16:22.83 ] 環境を疑う前に自分のコードを疑え
897 名前:デフォルトの名無しさん mailto:sage [2012/04/29(日) 07:36:34.10 ] >>896 もちろんやってます 最低限のDD、Primary、D3D、D3Deviceだけ作り ReleaseしようとするとDirect3DDeviceでエラーです テクスチャを読ませると DirectDrawSurfaceで同様になります このトラブルはVistaの頃から続いてるようで DirectX9でも同じエラーを確認しました 何か決定的な対処法が見つかってないかなと思い 質問してみたわけです 試してみたところ Releaseせずに処理を進めれば 問題なく動作してしまうので GMA500が勝手にそうしてしまうのか よくわかりませんが Releaseが必要かどうかを知る方法は ありませんよね? それともVista以降ではReleaseせずに 上書きするようにCreateするんでしょうか? でもSDKにはそんなこと書いてませんし GMA3000やGMA4500では Release必要だったので違いますよね
898 名前:デフォルトの名無しさん mailto:sage [2012/04/29(日) 08:30:29.61 ] もっと自分のコードを疑え。 最低限のコードだけでも貼れば、誰かが間違いを指摘してくれるかも。
899 名前:デフォルトの名無しさん mailto:sage [2012/04/29(日) 15:42:32.66 ] Releaseでクラッシュするとか、たいてい初期化していない物だったり、破棄済みを更に呼び出すとか素人コードな。 あとシングルスレッドのデバイスなのに複数のスレッドからアクセスするってのもNG。 他には、メモリ書き込みで他の領域を壊してしまったとか。 間違いなく、お前のコードにバグがある。
900 名前:デフォルトの名無しさん mailto:sage [2012/04/29(日) 17:39:16.03 ] あれからいろいろ試しましたが テクスチャを使用してポリゴン表示すると Direct3DDeviceかテクスチャのReleaseで エラー出るようです テクスチャ読んでも使用しなければ普通にReleaseできてます テクスチャを2枚読んで 2枚のポリゴンにそれぞれのテクスチャを貼り 終了するときReleaseさせると なぜか片方のテクスチャだけReleaseできます RenderStateでテクスチャのハンドルを渡しますが これをNullで消そうとしてもエラーです どうやら最後にRenderStateで伝えたハンドルの テクスチャをReleaseさせようとすると このエラーが出るようです なぜ開放してくれないのかはわかりません 逆にデバイスがロストしたときは デバイスやテクスチャは生きてるのに 実際はRelease済みになってるので Releaseさせようとするとエラーです DxSDK付属のサンプルでもエラーです SAFE_RELEASEマクロが機能しませんので当然こうなります DirectX7で作られたゲームや DxLibで作られたゲームでも 同様な環境でGPUを使うと 同じエラーが出てるようです その後の対処法が見つからず 情報が止まってしまっているので 解決できたのかどうかわかりません
901 名前:デフォルトの名無しさん mailto:sage [2012/04/29(日) 18:05:41.98 ] ところでエラーって何なのさ? 例外?エラーコード?
902 名前:デフォルトの名無しさん mailto:sage [2012/04/29(日) 18:19:08.37 ] >>901 AppCrashでigdumd32.dllからエラー出ます
903 名前:デフォルトの名無しさん [2012/04/30(月) 04:51:34.49 ] 技術面の質問ではないのですが、OSをwindows7の64bitに変えてから、DirectX製のゲームを起動すると どのゲームでも「ヴゥゥー」といった感じの爆音のノイズが必ず流れるようになりました。原因を教えてください
904 名前:デフォルトの名無しさん [2012/04/30(月) 08:25:21.52 ] やーだよ
905 名前:デフォルトの名無しさん mailto:sage [2012/04/30(月) 11:26:56.87 ] 最近、企画会社A社が日本進出を打診して落ち込んだ。所属アイドルグループの日本での活動を控え、 日本企画会社が提示した契約金が昨年水準に大きく至らなかった。既に昨年から日本でラブコールを受けていたが 国内でさらに実績を積んだ後に進出するという計画に支障をきたした。 K-POPが日本市場で萎縮する兆しを見せている。日本はアジアの最大規模の音楽市場だ。 日本エンターテインメント業界でK-POPを見つめる目が昨年に比べ熱気が冷めているという兆候が次から次へ感知されている。 今年の初めに日本で開かれた大規模公演のチケット販売率も大きく落ちた。 問題はこのような雰囲気がK-POPに否定的な影響を及ぼす恐れがあるというところにある。 既に今年開かれたいくつかのK-POP公演では赤字を記録したと伝えられた。先月に日本でアルバムを発売したいくつかの歌手の場合、 期待値にはるかに至らない成果を上げて関係者たちを落胆させた。 (中略) ついこの前まではK-POPという看板だけ掲げれば韓国で存在感がない歌手でも日本では注目をあびた。 もう日本進出に対する方法の変化が必要だという声が出てきている。 歌手らの実力とスター性を整えるのはもちろん、企画会社と放送会社全てが日本国内のK-POP市場をさらに拡張できる方法を模索し、 徹底したビジネスマインドで接近をしなければならないという指摘だ。 K-POP日本で何が?…放送会社主導公演「憂慮が現実に」(韓国語) starin.edaily.co.kr/news/NewsRead.edy?newsid=01092246599498088&DCD=A10202&SCD=EA21
906 名前:デフォルトの名無しさん mailto:sage [2012/04/30(月) 12:37:12.80 ] 来月末マスターアップで間に合わないので GMA500とVista以降の2つを検出したら クリーンナップでReleaseしないよう 対処することにしました お騒がせしました
907 名前:デフォルトの名無しさん mailto:sage [2012/04/30(月) 13:29:44.68 ] バグ入りで完成したとさ。おしまい。
908 名前:デフォルトの名無しさん mailto:sage [2012/04/30(月) 14:32:10.06 ] いまどきDX7時代の遺産の保守作業か 他人事ながら悲しくなってくるね
909 名前:デフォルトの名無しさん mailto:sage [2012/04/30(月) 15:13:28.73 ] このスレ読んでるだけで楽しい
910 名前:デフォルトの名無しさん mailto:sage [2012/05/01(火) 05:27:59.42 ] ウィンドウモードでも遊べるようなFPSを作っているのですが、 マウスカーソールをゲームウィンドウの外に出した時でも、無効化、非表示に するようにしたいのです。 SetCursorPosではペンタブ等で簡単に画面外をクリックできてしまいますし、 ShowCursorもクライアント領域内のカーソールしか非表示に出来ません。 なにかよい方法は無いでしょうか?
911 名前:デフォルトの名無しさん mailto:sage [2012/05/01(火) 06:19:48.38 ] ↑自己解決しました。ClipCursorで、カーソールの位置を制限できるそうです。
912 名前:デフォルトの名無しさん mailto:sage [2012/05/01(火) 23:14:17.85 ] ペンタブでFPSやる奴いねえだろ
913 名前:デフォルトの名無しさん mailto:sage [2012/05/02(水) 01:15:52.37 ] FPSは無いなって思えるけどフラッシュとかでたまにあるハエ叩きゲーとかだとペンタブのがやりやすいぜ
914 名前:デフォルトの名無しさん mailto:sage [2012/05/06(日) 01:33:34.48 ] DirectX11の参考書で初心者〜中級者向けの本探してるんだがオヌヌメありますか。言語はC++で