トップページgamedev
1001コメント355KB

DirectX総合スレ (Part2)

レス数が1000を超えています。これ以上書き込みはできません。
0001名前は開発中のものです。04/09/22 23:30:32ID:anobjZYP
DirectXについては基本このスレで話していこうとものです。
基礎的な質問+高度な質問も簡潔かつ簡単に答えることをモットーにして頂き
このスレの回転を早めて常にアクティブなスレにしたいと思っております。
このスレに質問等を書かれる方はまず最初に自分でしっかりと調べたのちに聞かれることをお願いします。
質問に対する答えも簡潔に出来る限りわかりやすくお願い致します。

テンプレは >>2以降で
0948名前は開発中のものです。05/01/06 16:08:44ID:8NORxRLB
つか例え目的がDirectXでもスレ違いだろ
0949名前は開発中のものです。05/01/06 19:11:06ID:4fGcDucu
Game Programming GEMS1-3,
GPU Programming GEMS
4冊まとめて買った、財布が軽くなった。

Shader関係のまともな書籍希望。
0950名前は開発中のものです。05/01/06 23:15:57ID:ybz7ujL5
>946
ごめんそれどこから落とせる?
MSDN見てても日本語版落とせるとこがよくわからん。
0951名前は開発中のものです。05/01/07 00:15:38ID:4rAwCZXu
>>950
まだウェブで落とせる日本語版はないと思ふ
.NETマガジンにVisualStudio2005 日本語β1がついてる号があるから
それを買えば、一通り日本語版で揃うかと。
0952名前は開発中のものです。05/01/07 00:33:17ID:6SrsHNeO
>951
d。つか、そうなるとバックナンバーとりよせになるのか。めど。
2003買うつもりだったが、2005がでるまでVC6で耐え抜くか・・・。
0953名前は開発中のものです。05/01/07 00:47:00ID:87KU+jZM
http://www.microsoft.com/japan/msdn/vstudio/2005/beta/
ここに入手方法が書いてあります。

http://www.ascii.co.jp/books/detail/4-7561/4-7561-4524-8.html
これにもついてるけど値段が微妙だね。どうしても無料がいいのなら図書館で借りるとかすれ
ばいいんじゃないかな。

しかし、Express Editionの日本語版ベータがダウンロードできるとか書いてある割には落とせる
のは英語版なのはどういうことなんだろね。
0954名前は開発中のものです。05/01/07 00:53:36ID:RWCHtkcv
REFで動いているサンプルはどうやったらそうじゃなく早く動かせる?
0955名前は開発中のものです。05/01/07 00:58:17ID:4rAwCZXu
その機能に対応したグラカを買う
0956名前は開発中のものです。05/01/07 06:36:44ID:omM2RTd5
それ以外なにがあんだよw
0957名前は開発中のものです05/01/07 23:46:55ID:iCv+fWlD
DirectXって、これフリーの物ですか??
0958名前は開発中のものです。05/01/08 00:11:07ID:hjXDiDO3
DirectXは有料
無料でインストールできるが、2週間後に認証処理をしなければならん
クレジット決済しかできんから未成年なら親に頼め

インストール時にIPアドレスがMicrosoftに送信されるんで
持ち逃げはできんから気をつけろ
0959名前は開発中のものです。05/01/08 02:17:57ID:Xl0WJE/G
>>958
夜釣りは日本海へ
0960名前は開発中のものです。05/01/08 02:50:13ID:xyz5UegZ
そして伝説へ
0961名前は開発中のものです。05/01/09 11:51:13ID:FR8TZ9zi
>>938

APIのコードをライブラリ化。
長文ソース簡略化で作業時間、効率を削減。

出来が悪いリファレンスに意外とアクセス多いみたいです。
サイトリニュアールも視やにいれ変更していってます。
0962名前は開発中のものです。05/01/09 12:35:30ID:s946grx7
Direct3Dによってアプリケーションがフルスクリーン状態になっている時に
タスク切り替えを行うと、そのアプリケーションはウィンドウ状態になりますが
表示が真っ白になってしまい、描画が全くされていないようです。
フルスクリーン←→ウィンドウ の切り替えは、どうすれば正常に動くのでしょうか?
SDKのサンプルソースを見てみましたが、何をやっているのかわけわかめでした。
どなたか分かりやすい解説をお願いします。
0963名前は開発中のものです。05/01/09 12:46:22ID:0rD/bgDv
>>962
フルスクリーン←→ウィンドウ のイベントが来るたびにデバイスを作り直さないと
だめじゃないかなぁ。
0964名前は開発中のものです。05/01/09 13:04:15ID:x5QNnQAx
>>962
もうちっと詳しくいうとDirectX3Dの初期化をやり直す作業が必要になる。
なぜなら、画面切り替え時にDirect3DDeviceやらなにやらがぶっ壊されて使えなくなってるから。

つまり、フルスクリーンモードとウィンドウモード切り替え時に
一度Direct3Dを破棄して、ウィンドウモードを切り変えた後、もう一度Direct3Dを初期化する必要がある。
設計能力が未熟だと結構つらいのであきらめてしまうのも、それはそれでアリ。だと思う。
商品だとまずいかもね。(就職作品ならこだわらない。俺は)
0965名前は開発中のものです。05/01/09 13:13:21ID:G1hSbZ98
>>662ではないですが、作り直す必要ってあるんですか?
今まではPRESENT_PARAMETERやウィンドウを変更してResetしていました
0966名前は開発中のものです。05/01/09 13:31:44ID:RFsYct+p
基本的にはResetでいけるはずなのだが、
環境によって正常に働かないとの症状を時々目にするので、
確実にやるならデバイスを作り直した方が無難。
しかしそこまで切り替えに神経質になる必用があるかどうかは疑問。
0967名前は開発中のものです。05/01/09 13:50:30ID:x5QNnQAx
>>965
BBXで検索かければ出てくるけど
壊れ方は2種類あってResetで復活可能なものと不可能なもの。
どういう状態がResetで復活可能なのか不可能なのかってのがわからないし、
作り直しに時間がかかるのは結局データのロードの部分だけなので
どっちの処理でもデバイスを作り直してしまっても特にチガイは無い。
ので、両方同じ処理にしてしまう人が多いようだ。というところでFA乙!
0968名前は開発中のものです。05/01/09 13:59:18ID:x5QNnQAx
ちなみに「わからないし」ってのは「俺がよくわからない」
という意味なので調べりゃなんとかなるレベルかもしれない。

ただ、ウィンドウモードで動作中にDirect3Dを使った
スクリーンセーバーなんてもの起動されたときの処理とか
色々と無茶なもん世の中にはたくさんあるから
まあ、ある程度の可能性で線引きして諦めないとね。
0969名前は開発中のものです。05/01/09 14:28:47ID:7z5UpXhu
確実にデバイスが壊れるのはスリープモードやサスペンドモードに入った時。
更に、Windowsモードでアプリケーション実行中にプロパティで色数変えられたりとかかなり泣ける。

 デバイスの再作成はDirectXでもかなりの癌なのだがこれってManagedDirectXならなんとか
なったりするのかな?
0970名前は開発中のものです。05/01/09 14:48:04ID:qVzWwg6n
>>969
なるわけないじゃんw
0971名前は開発中のものです。05/01/09 15:05:06ID:CtuYpCdZ
>>970
死ね
0972名前は開発中のものです。05/01/09 15:09:19ID:W7lwDpcc
>>969
ManagedDirectXでも解決はしないけど、最近のSDKについてくる
サンプルフレームワークを使うと、何も考えなくて対応できる

>Windowsモードでアプリケーション実行中にプロパティで色数変えられたりとかかなり泣ける。

これもOK
097396205/01/09 15:30:01ID:s946grx7
皆様方、ご指導ありがとうございます。
最初にResetのほうを試してみたのですが、どうもうまくいかず
最終的には、D3Dの再初期化という形で落ち着きました。
DX9SDKSampleより少しコピペして、以下のような形になりました。
サスペンド等でも問題ないようです。どうもありがとうございました。

// 画面フリップ
if ( FAILED(lpD3DDEV->Present(NULL,NULL,NULL,NULL)) )
 bDeviceLost = TRUE;

if( bDeviceLost )
{
 // Test the cooperative level to see if it's okay to render
 if( FAILED( hr = lpD3DDEV->TestCooperativeLevel() ) )
 {
  // Check if the device needs to be reset.
  if( D3DERR_DEVICENOTRESET == hr )
  {
   //デバイスの再作成を行います

   //Direct3D解放処理
   //Direct3D初期化処理  
   //VRAMへの再ロード処理
  }
 }else{
  bDeviceLost = FALSE;
 }
}
0974名前は開発中のものです。05/01/09 16:36:02ID:JbV6zqqN
市販ゲームの対応状況を見る限り、「サスペンドなんてさせるほうが悪い」って感じだけどな。
あと、フルスクリーン中のAlt+Tabは対応してくれたほうがありがたいけど
その前にウィンドウモード使わせて欲しいもんだ
0975名前は開発中のものです。05/01/09 16:39:03ID:aLY2NpdP
チート対策と称した手抜きだろ
0976名前は開発中のものです。05/01/09 16:50:16ID:qVzWwg6n
>>975
手抜きといいきれるほど楽な作業じゃない。
実際、Alt+Tabなんて一応はできるけど
「稀にハングアップしますよ?
まあ、特殊な状況においてで、かなり稀ですから勘弁しといてくださいよ。」
みたいなソフトは実はあると思うぞ。
一発ためしてみてできたからといって確実に成功しつづける
保障の無いソフトもあるのでセーブ前にやるのは危険だといっておこう。
ウィンドウモードならDirect3D使用のスクリーンセーバーはきっとけ。
多分保障はできないところのが多い。エロゲは別だけどねw
0977名前は開発中のものです。05/01/09 16:52:36ID:ssYrZbAJ
というかシステムのAlt+Tabを無効化して、
自前で切り替えルーチン書くのが普通だと思うけど
0978名前は開発中のものです。05/01/09 17:51:45ID:RFsYct+p
Direct3Dを使用したスクリーンセーバが、
わざわざ解像度の切り替えを行うようなものでなければ、
Direct3Dのデバイスを使うプロセスが起動したところで、
既存のデバイスはロストしないけど。
0979名前は開発中のものです。05/01/09 18:14:16ID:qVzWwg6n
>>978
解像度切り替えあるでしょ?普通。
俺の好きなデュープリズムスクリーンセーバーだとどうだ?
http://www.square-enix.co.jp/games/ps/dp/scr/
0980名前は開発中のものです。05/01/09 18:15:30ID:lxnxumar
>>979
デュープリ好き同志!(*´д`)
0981名前は開発中のものです。05/01/09 18:24:25ID:grwVmUvm
「普通」かどうかはしらんが、解像度を勝手に切り替えるスクリーンセーバーはみたことあるなあ。
0982名前は開発中のものです。05/01/09 18:28:51ID:RFsYct+p
3Dデバイスを使うとしてもカラーモードさえ適合していれば、
解像度切り替えは必要ないのに、切り替えを行っているものは結構あるみたいだけど、
何故いちいち切り替えるんだろう?
復帰するときにディスプレイが反応するまでのラグが気になってしょうがない。
0983名前は開発中のものです。05/01/09 19:24:00ID:06r4mXsd
起動時にどっちかでいいんでない
それより中身だ
0984名前は開発中のものです。05/01/09 19:33:35ID:0rD/bgDv
ゲームなら許せても漏れが作ってるビジネスアプリ(笑)では許されないかもしれんから
参考になった。板違いですまんがDirectXはゲーム専用ってわけじゃないってことで。
0985名前は開発中のものです。05/01/09 20:08:07ID:qVzWwg6n
>>984
ム板のDirectXスレに常駐してるような奴は
Alt+Tabの不具合なんて許さないだろうなw
ここじゃなくて向こういった方がいいよ。
0986名前は開発中のものです。05/01/09 20:20:57ID:Xm1HCRTl
>>977のソフトは何か危険な香りがする
昔、一瞬流行ってた気がする。ALT+TAB無効化。
0987名前は開発中のものです。05/01/09 20:30:12ID:qVzWwg6n
>>986
なんかOSによってできなかった予感。(予感だけ確証無し)
0988名前は開発中のものです。05/01/09 20:48:35ID:RFsYct+p
NT系の場合は、ローレベルなキーボードのフックが必用。
これをやられるぐらいなら、素直にデバイスが復帰しない方がマシ。
0989名前は開発中のものです。05/01/09 20:52:08ID:RFsYct+p
通常では塞げないCtrl+Alt+Delまで禁止する場合だけど。
0990名前は開発中のものです。05/01/10 02:10:33ID:KCMHEHQY
男らしく、フォーカスが無くなったら、PostQuitMessage()を投げる
ALT+TABした瞬間に終了する。
男らしい!
0991名前は開発中のものです。05/01/10 02:28:35ID:GSAaDrdl
>>990
わかってないなw
お前は真の男をみたことがないんだな。
真の男とはフルスクリーンモード+強制終了の禁止だ。
しかも、Alt+Tabでの復旧作業を行わないことだ。
Alt+Tabでゲームに戻っても画面は黒いまま、しかし、
ウィンドウモードに戻っても、Ctrl+Alt+Tabを禁止されているのでまったく終了できない。
これでWindowsを終了するまで絶対に終了できないゲームの完成だ。
Windowsより早く死んでなるものかという堅い決意が感じられる。正に男の中の男。
0992名前は開発中のものです。05/01/10 05:13:55ID:OHuqXPPk
普通に考えたらバグだな
0993名前は開発中のものです。05/01/10 05:21:59ID:vpNgF23Q
魔法の言葉

それは仕様
0994名前は開発中のものです。05/01/10 08:22:15ID:X0q+I75i
         ☆ チン     マチクタビレタ〜
                         マチクタビレタ〜
        ☆ チン  〃  Λ_Λ   / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
          ヽ ___\(\・∀・) < 次スレまだ〜?
             \_/⊂ ⊂_ )   \_____________
           / ̄ ̄ ̄ ̄ ̄ ̄ /|
        | ̄ ̄ ̄ ̄ ̄ ̄ ̄|  |
        |  愛媛みかん  |/
0995名前は開発中のものです。05/01/10 10:49:46ID:33c+Nomu
サスペンドから復帰するとブルースクリーンに成るのだけは勘弁してくれ。
0996名前は開発中のものです。05/01/10 10:53:43ID:c4TToaCF
>>995
普通にDirect3Dを使ったスクリーンセーバーが途中で起動すると
ブルースクリーンになる俺のプログラムw
0997名前は開発中のものです。05/01/10 11:19:49ID:pYmoBL4v
いやん、ここの男の作ったソフトなんてぜったい使いたくないわん。
0998名前は開発中のものです。05/01/10 14:02:48ID:vMWs9F2Z
DirectX総合スレ (Part3)
http://pc5.2ch.net/test/read.cgi/gamedev/1105333209/l50
0999名前は開発中のものです。05/01/10 14:24:35ID:iKCv2lH4
>>1000は俺の優しさで出来ている
1000名前は開発中のものです。05/01/10 14:27:07ID:ldVdDG/1
優しさゲット
10011001Over 1000Thread
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。