1 名前:デフォルトの名無しさん mailto:sage [2008/04/09(水) 09:55:56 ] ※回答する人も、質問する人も必ず読んでください これらに当てはまる人のための質問スレです。 1.C/C++は多少理解している。 2.最近DirectXを始めたばかり 3.SDKを見ても、Googleで検索しても、いまいち理解できない人 4.余計な雑談は不要ですよ 【 回答してくださる方 】 ・ できるだけ優しく質問に答えてあげてください。 ・ 優しく教えるのが嫌でしたら、解決するためのヒントだけでも結構です。 「ググれ」「SDK見れ」以外の回答でおながいします。 ・ 神ですら理解不能な質問は無視して下さい。 【 質問する方 】 ・ どんな事で躓いているのか明確にしよう。 ・ 長くならないなら躓いている部分のコードを晒してみれ。 ・ 解決した場合、お礼を言うのは当然だが、何をどうしたら解決したかを明確に書こう。 ・ 回答して貰ったら、出来るだけお礼もしよう。 【C++】 DirectX初心者質問スレ Part16 【C】 pc11.2ch.net/test/read.cgi/tech/1202634347/
462 名前:デフォルトの名無しさん mailto:sage [2008/05/16(金) 20:16:19 ] >>459 知らなかったw
463 名前:デフォルトの名無しさん mailto:sage [2008/05/16(金) 20:24:29 ] 固定シェーダの恐怖だな nVidiaとその他一部のボードでは動くんだけど それ以外ではうんともすんとも言わないとかいう状況がありえる恐怖 (納期まで一週間とかいう状況ではじめてRADEONで動かして画面真っ黒になったときは血の気が引いたw) HLSL使うようになってからそういう苦労は一応消えた 固定シェーダ止めるとこの辺はグッと楽になる
464 名前:デフォルトの名無しさん mailto:sage [2008/05/16(金) 20:27:22 ] >(納期まで一週間とかいう状況ではじめてRADEONで動かして画面真っ黒になったときは血の気が引いたw) > いやあああああああ
465 名前:デフォルトの名無しさん mailto:sage [2008/05/16(金) 21:05:12 ] >>461 なるほど、とりあえずRADEONの購入は検討してみます >>463 それは血の気が引きそうですね 私も公開するゲームを作っているので、なるべくRADEONにも対応したいところです 全てHLSLで書くのも検討していますが、「・テクスチャーの表示がおかしい」の件は、HLSLを使った描画の部分でも発症しているので困ったものです…
466 名前:デフォルトの名無しさん mailto:sage [2008/05/16(金) 21:47:12 ] DirectXの勉強をはじめたいのですがもう固定機能パイプライン?は無視してHLSLとかプログラマブルな シェーダーの勉強を始めたほうがいいのでしょうか?
467 名前:デフォルトの名無しさん mailto:sage [2008/05/16(金) 21:55:47 ] 自分の開発環境がプログラマブルシェーダに対応しているなら、そっちのみでいいと思われる。 VertexShaderは最低でもソフトウェアエミュレートができるし、 PixelShaderにしてももう対応していないグラボなんて存在しないと思っていい。 でもオンボは対応してねーんだよなぁ('A`)
468 名前:466 mailto:sage [2008/05/16(金) 21:58:34 ] MSのカンファレンスでもらったVS2008スタンダードにGe7900gs、OSはXPです。 固定機能はさすがにいいですかね。
469 名前:466 mailto:sage [2008/05/16(金) 21:59:39 ] ありがとうございました。
470 名前:デフォルトの名無しさん mailto:sage [2008/05/16(金) 22:03:59 ] 皆さんノートPCのことも考えてあげてください もしくはこの世から全てのオンボードPCを破壊してくださいマジでもう
471 名前:デフォルトの名無しさん mailto:sage [2008/05/16(金) 22:15:54 ] >>452 vc++2008ではまんまではコンパイルとおらなかったので、DInput.cppの 63行目 ret = DirectInput8Create(hinst,DIRECTINPUT_VERSION,IID_IDirectInput8,(void**)&lpDInput,NULL); 115行目 ret=lpDInput->EnumDevices(DI8DEVCLASS_GAMECTRL,InitJoystickInput,lpDInput,DIEDFL_ATTACHEDONLY); に修正してコンパイルとおしたんだけど、126行目がfalseを返してくるの。
472 名前:453 mailto:sage [2008/05/16(金) 22:29:39 ] 色々アドバイスありがとうございました。 >・固定シェーダの挙動がおかしい この件ですが、RADEON上だけでなく、GF上でもREFモードだとうまく表示できませんでした。 >>459 さんのアドバイスがクリーンヒットだったようで、気をつけながら直したところ、REFでも綺麗に表示されるようになりました。 RADEON上でpTexture1が乗算されるようになったようです。 (ただし、pTexuter1自体がバグっているため、乗算はされたものの、おかしなテクスチャが乗算されています) 今後はREFモードでちょくちょくチェックしながらやっていきます。 現在は、RADEON使いと連絡がとれなくなってしまったため、 「・テクスチャーの表示がおかしい」については後日また調査して、報告します。 どうしても治らない場合はまた相談させていただくかと思いますが、その時はよろしくお願いします。
473 名前:デフォルトの名無しさん mailto:sage [2008/05/16(金) 22:36:29 ] お疲れさん ちゃんと報告してくれる質問者は歓迎だぜ
474 名前:デフォルトの名無しさん mailto:sage [2008/05/16(金) 23:08:47 ] ウホッここを覗いててよかった ラデオン買ってくる
475 名前:デフォルトの名無しさん mailto:sage [2008/05/17(土) 07:41:55 ] >>471 DIrectX 7以下じゃないと動かないよ 8にするなら全部書き換えろ
476 名前:デフォルトの名無しさん mailto:sage [2008/05/17(土) 07:49:36 ] >>448 Dinput.hに #define DIRECTINPUT_VERSION 0x0700 を追加
477 名前:デフォルトの名無しさん mailto:sage [2008/05/17(土) 20:09:42 ] 関係ないけど、DirectInputってウイルスバスターが不正変更で〜って怒るとない? お兄さんたちはどうしてるのかな?
478 名前:デフォルトの名無しさん mailto:sage [2008/05/17(土) 20:12:54 ] あ、あれってDirectInputのせいなんだ。。。 僕の作ったソフトも怒られるから気になってたけど。。。
479 名前:デフォルトの名無しさん mailto:sage [2008/05/18(日) 16:32:53 ] ウイルスバスターはDirectInput使うと怒るのね 友人にテストしてもらったら 「不正な変更とか出る ウイルスだろこれ?」 とか言われたお ネットワーク対応ゲームでも作ろうかと思うんだが、 DirectPlay使うのとWinSock使うのとどっちがいいんだろ DirectPlyaはWinSockに比べるとダメだという話をよく聞くけど どこがどうだめだかよくわかんね 手軽に実装するならDirectPlayのほうが楽そうにも感じる そこら辺詳しい人いませんか?
480 名前:デフォルトの名無しさん mailto:sage [2008/05/18(日) 17:25:02 ] あんま詳しくないが、TCP使えないらしいお。 そういった制限があるから、やっぱ「お手軽通信」なイメージはある。 Winsockは、アプリケーションが使うTCP/IPの基本かつ全てだから DirectPlayに出来てWinsockに出来ないことはない。 そういう意味だとオモ<Winsockに比べるとダメ 本当にTCPが使えないのなら、オンラインRPGには無理なだ。
481 名前:デフォルトの名無しさん mailto:sage [2008/05/18(日) 18:00:21 ] 今右ドラッグで3Dオブジェクトを回転させるのをやっていて、とりあえず D3DXQuaternionRotationYawPitchRoll(&q,マウスのX変移,マウスのY変移,0); とやってそれっぽい動きにはなってるんですが、どうもメタセコとかと操作感が違うんですよね。 ドラッグ開始時にXYの回転軸を作って、それに対する回転てやりたいんですが 何使ったらいいですか?
482 名前:デフォルトの名無しさん mailto:sage [2008/05/18(日) 18:11:10 ] >>481 RotationYawPitchRollは角度が非常に小さければ任意軸周りの回転に 近い動きをするが、本来は全く違うもの。 マウスの移動量とZ軸で外積を取って、その軸周りの回転を使う。
483 名前:デフォルトの名無しさん mailto:sage [2008/05/18(日) 18:20:19 ] >>482 親切にありがとうございます。意味はなんとなく分かるんですが、頭がついて来れなくて・・・ で、それはZ回転が起こらない場合にのみ使えるんですよね?多分(今回はそれでもいいですが)
484 名前:デフォルトの名無しさん mailto:sage [2008/05/18(日) 19:57:07 ] >>479 色んな通信に対応しすぎてて、初期化が遅いのが一番の不満かな<Play といってもPlay使ってたのはDirectX7の頃だから、改善されてるかもしれんが。 WinSockなら全ての通信を自分で把握できるのが強み。
485 名前:デフォルトの名無しさん mailto:sage [2008/05/18(日) 20:27:13 ] >>484 DirectPlayは廃止されて久しい。 WinSockを叩くのが一番無難で楽しい。
486 名前:デフォルトの名無しさん mailto:sage [2008/05/18(日) 20:32:54 ] WinSockだとセッションとかのゲーム的な概念がないから そこらへんも全部自分で実装しなきゃならないんだよね? WinSockのネットゲームで使えそうなお手ごろサンプルがあるといいんだけど
487 名前:デフォルトの名無しさん mailto:sage [2008/05/19(月) 03:08:12 ] 質問です。 DirectXを使って2Dゲームを作ってみようと思ってMSDNのリファレンスを見ていたところ、 CreateVertexBuffer()で頂点バッファを作ってLockとUnLockの中で頂点を処理していました。 ですが、別のホームページにはこれらを使わずに描画してるページもありました。 2Dの場合はCreateVertexBufferを使わずに描画したほうがいいのでしょうか? それともCreateVertexBufferを使わなくても描画出来るという解釈でいいのでしょうか?
488 名前:デフォルトの名無しさん mailto:sage [2008/05/19(月) 03:22:35 ] 別にどういうやり方しても構わないよ。 ただ、 ・頂点バッファをビデオメモリ上、AGPメモリ上に作ると描画が速い ・が、そういう場所に作った頂点バッファをLockするのは重い(ビデオカードの処理を止めるから) ・システムメモリ上に作った頂点バッファのロックなら遅くない(多分。)が、 それは頂点バッファ作らない方法と同じこと。ビデオカードから遠いので描画は遅い 毎フレーム書き換えるような頂点配列なら、システムメモリに置くか 頂点バッファ使わずにやるのがのがいいんじゃないかと。 検証とかしたことないので間違ってたら指摘ヨロ
489 名前:デフォルトの名無しさん mailto:sage [2008/05/19(月) 03:26:37 ] チラシの裏にでも書いてろ
490 名前:487 mailto:sage [2008/05/19(月) 03:43:14 ] >>488 なるほど、どっちの処理が重いかで使い分けるといいみたいですね。 ありがとうございます。
491 名前:デフォルトの名無しさん mailto:sage [2008/05/19(月) 10:26:00 ] >>488 追加⇒DYNAMICとDISCARDフラグを組み合わせると描画もLockも速いがメモリを食う。
492 名前:デフォルトの名無しさん mailto:sage [2008/05/19(月) 13:56:52 ] >>489 なるほど、チラシの裏ですね よくわかりました
493 名前:472 mailto:sage [2008/05/19(月) 19:22:45 ] 色々アドバイスいただいた>>453 です。 >>459 さんのアドバイスによる修正のおかげか、RADEON上でも綺麗に表示されたそうです。 ありがとうございました。 D3DTSS_COLORARG1 にTEXTURE D3DTSS_COLORARG2 にCURRENT なるべくこうするのが吉。というわけですね。 大抵の初心者サイトがこうしている一方、時々は逆も見かけるようです。 他の人が同じ失敗しませんように…。
494 名前:デフォルトの名無しさん mailto:sage [2008/05/19(月) 19:35:23 ] チェックしたら見事に失敗してたわ SDKをもう一回全部読み直したほうがいいかもなー・・・
495 名前:デフォルトの名無しさん mailto:sage [2008/05/19(月) 20:06:53 ] 演出について質問 キャラが地面に着地した際、演出として着地点のまわりに衝撃波を立てたいと思っています 例えるなら、牛乳の入ったコップに牛乳を一滴おとした時にできる、王冠のようなものです こういう演出はどのようにして実装するのが良いでしょうか? 今まではボーンアニメまでしかやったことがないのですが、モーフィングという技術のほうがより良さそうな気がしています
496 名前:デフォルトの名無しさん mailto:sage [2008/05/19(月) 23:56:15 ] >>495 スケーリングで十分
497 名前:487 mailto:sage [2008/05/20(火) 00:09:01 ] >>492 調べてみたら動的に確保したメモリを静的に確保したように見せるとのことだったんですが、 これはVRAMとAGPメモリに確保して同期させるという解釈でいいのでしょうか?
498 名前:487 mailto:sage [2008/05/20(火) 00:09:52 ] すいません>>492 ではなく>>491 でした
499 名前:デフォルトの名無しさん mailto:sage [2008/05/20(火) 01:53:49 ] >>497 昔はそうなんだが、現在のVGAだと諸々の理由でシステムメモリを介したコピーを 行っているものが多いので、動的な頂点バッファはほとんど意味を成さなくなっている。 経験で言うならシステムメモリよりも頂点バッファを使う方がパフォーマンスが高くなる 傾向があるのは確かだが、大半は大した性能差があるわけでもないし、 そもそも適切に扱うためのフラグ設定が頂点バッファはわかりにくいので、 個人的にはシステムメモリ(DrawIndexPrimitiveUP等)で実装することをお勧めする。 2Dスプライトの実装なんぞDrawPrimitiveのバッチ処理さえしておけば それ以上は深く考えんでも良いと思うぞ。
500 名前:デフォルトの名無しさん mailto:sage [2008/05/20(火) 08:28:59 ] AGPメモリを使うか否かで動的なデータは速度に大差が出るぞ
501 名前:デフォルトの名無しさん mailto:sage [2008/05/20(火) 12:44:39 ] 非同期で処理させるかの違い
502 名前:デフォルトの名無しさん [2008/05/20(火) 19:02:00 ] まあ、自分のゲームでやってみるのが一番 つーのは想定している状況によりけりって感じだから なんでも使える汎用ルーチンなんて作ろうと考えないで状況に応じて対処したほ
503 名前:487 mailto:sage [2008/05/20(火) 20:53:38 ] >>499-502 2Dの処理にそこまで考える必要はないけど、 詳しく知りたい場合は自分のゲームで実装して調べたほうが早い、とのことなので、 時間に余裕があるときに調べてみたいと思います。 色々ありがとうございます!
504 名前:デフォルトの名無しさん mailto:sage [2008/05/20(火) 21:17:01 ] 環境にもよるんじゃないか
505 名前:デフォルトの名無しさん mailto:sage [2008/05/20(火) 21:49:34 ] WinSockだとポート空けるのをユーザー側に頼まなければならないので UPnP対応してるDirectPlayつかうことにしたぽ
506 名前:デフォルトの名無しさん mailto:sage [2008/05/20(火) 22:42:13 ] UPnPの対応はDirectPlayに頼らなくても簡単に出来るぞ
507 名前:デフォルトの名無しさん mailto:sage [2008/05/20(火) 22:55:18 ] >>506 www.bosuke.mine.nu/neta/upnp.shtml これためしてみたけどルータがふるくてだめだった しかしDirectPlayだとポート開放しなくても通信できる もっといい方法があるならおしえてくださいませ
508 名前:デフォルトの名無しさん mailto:sage [2008/05/20(火) 22:56:06 ] Direct3D9.0のデバイスロストからの復帰で ・D3DPOOL_DEFAULTのテクスチャ解放 ・D3DXFONTのOnLostDevice()呼び出し この2つは順番適当 ・D3DXSpriteのOnLostDevice()呼び出し pDevice -> Reset(&Param); ・D3DXSpriteのOnResetDevice()呼び出し ・D3DPOOL_DEFAULTのテクスチャ確保 ・D3DXFONTのOnResetDevice()呼び出し この2つは順番適当 ・レンダーステートの回復 てやってるんだけど、画面真っ暗です。これ以外に何やるんでしょう? あと順番に決まりはあるんでしょうか?
509 名前:デフォルトの名無しさん mailto:sage [2008/05/20(火) 23:03:40 ] >>508 確保したリソースの解放をちゃんとしましょう。 Debug Runtimeでエラーメッセージの確認をしましょう。
510 名前:デフォルトの名無しさん mailto:sage [2008/05/21(水) 20:30:26 ] >>506 ひょっとして upnp.h とか使うの? ネット探しても具体的なやりかたが乗ってるところがないのが困る
511 名前:デフォルトの名無しさん mailto:sage [2008/05/21(水) 23:15:17 ] >>510 ttp://www.bosuke.mine.nu/neta/upnp.shtml おもくそ有名なサイトがあるわけで ぐぐろうよ
512 名前:デフォルトの名無しさん mailto:sage [2008/05/22(木) 00:12:19 ] お前は空気読め
513 名前:デフォルトの名無しさん mailto:sage [2008/05/22(木) 02:01:13 ] 「頂点ベースの描画」という言葉の意味がよく分かりません 対になるものは何でしょうか?
514 名前:デフォルトの名無しさん mailto:sage [2008/05/22(木) 16:48:56 ] ポリゴンで描画(3つの頂点)で描画と思ったらいいんじゃね? ポリゴン2個で四角形になるお
515 名前:513 mailto:sage [2008/05/22(木) 16:53:09 ] >>514 知識不足ですみませんが、そうでない描画の方法があるのでしょうか?
516 名前:デフォルトの名無しさん mailto:sage [2008/05/22(木) 16:56:14 ] つーか、「ポリゴンで描画で描画」ってなんだよ。
517 名前:デフォルトの名無しさん mailto:sage [2008/05/22(木) 17:25:02 ] そもそも 「頂点ベースの描画」なんて聞いたことがない
518 名前:デフォルトの名無しさん mailto:sage [2008/05/22(木) 17:28:55 ] >"ポリゴンで描画で描画"との一致はありません。 >"頂点ベースの描画"の検索結果 1 件中 1 - 1 件目 (0.14 秒) >"頂点ベース" の検索結果 約 148 件中 1 - 10 件目 (0.24 秒)
519 名前:デフォルトの名無しさん mailto:sage [2008/05/22(木) 17:59:10 ] 頂点シェーダーでライト当てるかピクセルシェーダーでライト当てるかって事でないん? そのくらいしかない気がするんだが。
520 名前:デフォルトの名無しさん mailto:sage [2008/05/22(木) 19:50:11 ] >>513 どこで頂点ベースって聞いたんだよ? >そうでない DirectDrawのスプライト描画のことじゃね? さいきんのゆとりはDirectX7以前を知らんのか
521 名前:デフォルトの名無しさん mailto:sage [2008/05/22(木) 19:50:44 ] ポリゴンで描画の間違い
522 名前:デフォルトの名無しさん mailto:sage [2008/05/22(木) 22:30:57 ] そもそもDirectXにスプライトなど存在しない
523 名前:デフォルトの名無しさん mailto:sage [2008/05/22(木) 22:39:14 ] ジオメトリベースド イメージベースド
524 名前:508 mailto:sage [2008/05/22(木) 23:22:56 ] バックバッファの解放と確保 ステンシルの解放と確保も付けたんですが、まだPresent(0,0,0,0)がD3DERR_DEVICELOSTを 出してきます。何が足りないんでしょうかT-T
525 名前:デフォルトの名無しさん mailto:sage [2008/05/22(木) 23:27:27 ] それは作った本人にしかワカリマセン。
526 名前:デフォルトの名無しさん mailto:sage [2008/05/22(木) 23:29:53 ] POOL以外で作ったテクスチャとか頂点とか全部削除する
527 名前:デフォルトの名無しさん mailto:sage [2008/05/22(木) 23:32:30 ] >>526 StateBlockとかもだな。 EffecとかFontとかSpriteも中でStateBlock作ってるからロスト対策が要るけどなー
528 名前:508 mailto:sage [2008/05/22(木) 23:45:28 ] フロントバッファは何もしなくていいんでしょうか?StateBlockは作ってるつもり はないんですが・・・何か他に暗黙的なものがあったら教えていただけないでしょうか?
529 名前:デフォルトの名無しさん mailto:sage [2008/05/22(木) 23:52:57 ] スレ住人が超能力に目覚めるよりはソースを出す方が解決は早い思います。
530 名前:デフォルトの名無しさん mailto:sage [2008/05/22(木) 23:53:04 ] D3DX〜系のLostDevice()は全部やってる?
531 名前:デフォルトの名無しさん mailto:sage [2008/05/23(金) 00:16:03 ] DX10で作ればおk
532 名前:デフォルトの名無しさん mailto:sage [2008/05/23(金) 00:17:15 ] Resetしてないんだろwww
533 名前:508 mailto:sage [2008/05/23(金) 00:43:08 ] >>528 ソースのみですか?関係ないクラスを除いた抜粋でいいですか? >>530 フォントとスプライトなら呼んでます。 >>532 Resetからの返り値も出力してるので多分大丈夫だと思います・・・
534 名前:デフォルトの名無しさん mailto:sage [2008/05/23(金) 00:53:32 ] ResetはPresenがD3DERR_DEVICELOST以外を返した後の話だから関係なくね?
535 名前:508 mailto:sage [2008/05/23(金) 00:58:54 ] ttp://ccfa.info/cgi-bin/up/src/up19318.zip なんかいろいろ言われそうで怖い・・・よろしくお願いします。
536 名前:デフォルトの名無しさん mailto:sage [2008/05/23(金) 12:09:02 ] 現在、大学3年でシェーダーの勉強をしています。 それで、データの可視化の研究をしてみたいと思うようになったのですが、シェーダーの出番ってありますか? 無駄になるのもなあと思っているのですが。 OpenGLも少し勉強したことはあったのですが、可視化の分野はどちらを使ったほうがいいでしょうか? また、仮にシェーダーを使う場合、どのような研究のネタがあるでしょうか?
537 名前:デフォルトの名無しさん mailto:sage [2008/05/23(金) 13:04:30 ] どう可視化したいのかも書かずに質問とな?
538 名前:デフォルトの名無しさん mailto:sage [2008/05/23(金) 13:10:17 ] と言うか、綺麗に見せたきゃ使うような物だからあんまり意味なくね?
539 名前:デフォルトの名無しさん mailto:sage [2008/05/23(金) 14:29:49 ] >>535 common.h無いいわれるお できればプロジェクトもあげてほすぃ デバッグしやすい
540 名前:デフォルトの名無しさん mailto:sage [2008/05/23(金) 15:47:51 ] 関係ないが Graphics::drawSprite のBegin End の対応がおかしい
541 名前:508 mailto:sage [2008/05/23(金) 19:03:13 ] >>539 ttp://ccfa.info/cgi-bin/up/src/up19342.zip プロジェクトはBCCのしかなかったので、ついてません。申し訳ないです。 >>540 多分治ってると思います(? C++と窓とDirectX同時に勉強してたんで、拙いところがたくさんありますが
542 名前:デフォルトの名無しさん mailto:sage [2008/05/23(金) 23:08:12 ] 現在ブロック崩しを製作中なのですが、もし「20個あるブロックがなくなったら」という状況を表現するために下記のように打ったら、「error C2106: '=' : 左のオペランドが、左辺値になっていません」とエラーが出ました。 どうすればいいのでしょうか。 if(block1==0&&block2==0&&block3==0&&block4==0&&block5==0&&block6==0&&block7==0&&block8==0&& block9==0&&block10==0&&block11=0&&block12==0&&block13==0&&block14==0&&block15==0&& block16==0&&block17==0&&block18==0&&block19==0&&block20==0)
543 名前:デフォルトの名無しさん [2008/05/23(金) 23:12:19 ] すいません、正式に言うと「ブロックがなくなったら」ではなく、「ブロック変数がゼロになったら」でしたね
544 名前:デフォルトの名無しさん mailto:sage [2008/05/23(金) 23:25:17 ] block11=0
545 名前:508 mailto:sage [2008/05/23(金) 23:26:17 ] よくこの釣り間違い探しをやるな
546 名前:デフォルトの名無しさん mailto:sage [2008/05/23(金) 23:26:42 ] >>544 intした名前が「block11」だったのがまずかったってことですか?
547 名前:デフォルトの名無しさん mailto:sage [2008/05/23(金) 23:40:00 ] >>546 マジで言っているならプログラミングなんてやめて旅にでも出ることをお勧めしておく。
548 名前:デフォルトの名無しさん mailto:sage [2008/05/23(金) 23:42:28 ] >>547 今気がつきました=が一つしかありませんでしたね 初歩的なミスでした
549 名前:デフォルトの名無しさん mailto:sage [2008/05/23(金) 23:43:40 ] もっと根本的に変数使いすぎ 配列など、別のアプローチを考えれ
550 名前:デフォルトの名無しさん mailto:sage [2008/05/23(金) 23:46:02 ] いやあ、恥ずかしいです…
551 名前:デフォルトの名無しさん mailto:sage [2008/05/23(金) 23:48:11 ] 配列はおろか、ブロックの数をカウントするカウンター作ったほうがいいだろ…。あとここDirectXスレ…
552 名前:デフォルトの名無しさん mailto:sage [2008/05/23(金) 23:51:29 ] おっとここはDirectXスレだったな 釣られちまったぜ
553 名前:デフォルトの名無しさん mailto:sage [2008/05/24(土) 01:25:59 ] >>545 誰もやってない悪寒。 少なくとも俺はソースがあまりにひどかったので1度動かして消した。
554 名前:デフォルトの名無しさん mailto:sage [2008/05/24(土) 11:40:55 ] この前RADEONだと色々厳密という話しがでたので、RADEON買って来て試してみた 今まで遊びで作ってたほとんどのゲーム、まともにうごかねえw 色々見直そう
555 名前:デフォルトの名無しさん mailto:sage [2008/05/24(土) 12:02:08 ] Radeon、Geforce両方をDebugRuntimeでチェックするのがベスト。 nVidiaのドライバーは空気を読見すぎるのが困る。 しいていうならタグが変でも一応見れちゃうIEと手厳しいネスケの違いみたいなもんか。
556 名前:508 mailto:sage [2008/05/24(土) 12:18:10 ] >>553 545のは直上の人に言った言葉です ていうか、特に何がやばそうでしたか?
557 名前:デフォルトの名無しさん mailto:sage [2008/05/24(土) 13:05:57 ] >>556 まずアプリの終了時にバックバッファ解放してないだろ。 Getしたものは全部Releaseしろ。 あとSDKいれてるならDebugRuntimeで試せ。 それなら終了時に解放してなかったりD3Dエラーが出たときにデバッガで落ちるようになる。
558 名前:デフォルトの名無しさん mailto:sage [2008/05/24(土) 14:31:53 ] CComPtrマンセー
559 名前:デフォルトの名無しさん mailto:sage [2008/05/24(土) 16:51:30 ] 俺はこんな感じでやってるわ class ICallbackDeviceReset { public: ICallbackDeviceReset();// std::setでつくられたグローバルリストに登録 virtual ~ICallbackDeviceReset();// std::setでつくられたグローバルリストから解除 virtual OnLostDevice()=0; virtual OnResetDevice()=0; }; デバイスのロスト>リセット時に呼び出されたいクラスは、このクラスを継承するようにすれば 自動的に呼び出されるようになる。
560 名前:508 mailto:sage [2008/05/24(土) 16:59:16 ] >>557 バックバッファの解放とはGraphicsオブジェクトにセットしたポインタをリリースしろということでしょうか? それならばGraphicsオブジェクト終了時に自動解放されています。 ところが、デバッグモードで見たらMemory still allocated! Alloc count = 94の文字がorz しかもAllocIDが出ないので、何がまずいのか分かりませんでした・・・ CreateDeviceの際にパラメータに書いてあるバックバッファやステンシルバッファといった物は 明示的な解放はいらないですよね? >>559 std::setがstd::listなだけでまったく同じことしてます。
561 名前:デフォルトの名無しさん mailto:sage [2008/05/24(土) 17:06:50 ] >>560 listに入ってないリソースを疑うか listの処理そのものを疑え。
562 名前:508 mailto:sage [2008/05/24(土) 17:27:19 ] リリース忘れはどうやらスプライトのようでした・・・ これで先のエラーは出なくなったんですが、Ctrl+Del+Altを押した時に Direct3D9: (ERROR) :Device is in an invalid state. Only Reset, TestCooperativeLevel or Release could be called がひたすら出てしまいました。デバイスロストからの復帰に失敗してるんでしょうが、なにぶんメッセージの意味が分かりません >>561 どうやらlistが怪しいようです・・・。ここをもうちょい詰めてみます。