トップページgamedev
987コメント302KB

DirectX総合スレ (Part9)

レス数が950を超えています。1000を超えると書き込みができなくなります。
0001名前は開発中のものです。2009/02/11(水) 05:00:58ID:viN0kzG2
言語はC++

■過去スレ

DirectX総合スレ
Part 8: http://pc11.2ch.net/test/read.cgi/gamedev/1205306118/
Part 7: http://pc11.2ch.net/test/read.cgi/gamedev/1179516297/
Part 6: http://pc11.2ch.net/test/read.cgi/gamedev/1163691532/
Part 5: http://pc8.2ch.net/test/read.cgi/gamedev/1157727402/
Part 4: http://pc8.2ch.net/test/read.cgi/gamedev/1132937938/
Part 3: http://pc5.2ch.net/test/read.cgi/gamedev/1105333209/
Part 2: http://pc5.2ch.net/test/read.cgi/gamedev/1095863432/
Part 1: http://pc5.2ch.net/test/read.cgi/gamedev/1083728025/
0937名前は開発中のものです。2010/01/16(土) 01:31:49ID:DczvJ3xK
いや、ググれば一発だが
http://www.microsoft.com/japan/academic/learning/default.mspx
0938名前は開発中のものです。2010/01/16(土) 01:44:31ID:s5EX4Xay
   /  ::::::::::/ /:::::::::::::::::::::::::::::::/ '!::::::::::::.. \
  /.:/::::::::::::::ケ---i::::::/::::/:::::::::::::/-''' ̄ヽ::i;;:::::::::::. ヽ
  //:::::::::::://_____|::://!:::::::/:/      'i:!,ヽ:::::::::::::..i,
 / |:::::::::/  !:::::::::::::/:::::/::://:/  ___ニ  !:| 'i::::::::::::::::i
  |::::::/  |:::::::::::::::::::::i:::/  !/,.=''"_,,,,,、`'  !|  '|::::i::::::::::}
  ヽ::{   .|:::::::::::::::::ミi:/  /  /::::::::゚::i       i::||:::::i:::|
   ヾ    |:::::::::r-ヾ   .....  ヽ::::::::::/      ニ!,|:i::|::::|
       !:::::::i  )  ::::::::::::  `''''"     /::゚i |!i|/::i!:{
        |:::::!  (   '''''          !:::ノ !./::i!:| `
        !:i:::`ヽ,,_              '  ../:i:::| `
        `'丶:::::::ヽ              :::!v `'
          ヽ!i;::::|                  ,i
            ヽ|         r'フ    /  <いっばちゅぅ?
             |     `┬...,,,,,,,... - '"
          r--ン        |`'
        _,ノ    `ヽ  _   ヽ  __
       /=-ー 、    ヽ `  - ` y `.,,
      /" '{!,: : : :丶,、   \  /  _,}、
     /   {|: : : : : : : :`: :-i--X--::'": :.i}ヽ
0939名前は開発中のものです。2010/01/17(日) 02:33:22ID:6/wwrOJ+
質問です。
Direct2Dを使って、WPFのドロップシャドーみたいな影を表現する方法ってありますか?
0940名前は開発中のものです。2010/01/18(月) 10:53:52ID:y3rroBcl
質問です。
XP環境でC#+MDX使って2Dのゲーム作ってるんですが、
vistaの64ビットだとまったく起動せず、
vistaの32ビットだと、マシン(実行環境)によって
1.普通に動作する。
2.ウィンドウモードだと普通に動作、フルスクリーンで処理落ち
という2パターンの動作が起きます。
特に2のほうは、自分の頭では理解不能でここは普通逆の現象が起きると思うんですが
誰か詳しい方教えていただけないでしょうか?
0941名前は開発中のものです。2010/01/18(月) 11:51:02ID:kytFWZ6a
起動に関してはデバッガを使って落ちているところをちゃんと調べたのか?
09429402010/01/18(月) 13:13:38ID:rrSRKZvD
vista64のほうは手元に環境がないので動作テスト用に作ったものを渡して試してもらった。
なのでデバッガ使って調べてはいない。出先なのでエラーの詳細は書けない(メモ持ってない)。
「不正なwin32アプリです」的なエラーが出るそうだ。
プロジェクト出力もインストーラもvs2008で作成し
vistaなら入ってるだろうとは思いつつも
必須コンポーネントとして.net Frameworkやら何やらも含めてある。
vistaについての理解が乏しいのでたぶんアホなことをしてるんだと思うけれど、
32bitだと動いて64bitだと動かない。32bitエミュの仕様なのかな〜程度の認識。
あとフルスクリーンで処理落ちも、普通逆だろ!?程度の認識。
0943名前は開発中のものです。2010/01/18(月) 13:43:50ID:blXr6LgG
あーMDXとかのDLLは32bitなので
C#で作る時は、AnyCPUじゃなくてx86にしないと64bit環境じゃ動かないよ。
x86は構成マネージャから新規作成で追加できる。

この問題があるからVisualStudio2010からはアプリのデフォルトがx86になった。
0944名前は開発中のものです。2010/01/18(月) 13:47:29ID:blXr6LgG
あ、ついでにEXEとかができる場所は
bin\Release → bin\x86\Release になるからコピーするとき気をつけて
09459402010/01/18(月) 14:31:22ID:rrSRKZvD
ありがとうございます。
戻ったらさっそく変更かけて再テストしてみます。
0946名前は開発中のものです。2010/01/18(月) 15:55:43ID:k/sr1Lvb
フルスクリーンで処理落ちするってのは無駄にvsync待ってるんじゃないかな
0947名前は開発中のものです。2010/01/23(土) 04:49:13ID:3OPcPbrR
すみません。3Dキャラクターの2D座標を D3DXVec3Project で生成しているのですが、
カメラの外(特に裏側)のキャラクターの2D座標を作ると異常な値になるので
視野のキャラクターのみに絞込みをしたいのですが、上手く行きません。

今はカメラの向きベクトルと、カメラから対象モンスターへのベクトルから
平面的に角度を計算して・・なんて事をやっていたのですが、
カメラを引くとそれじゃ上手く行く訳が無い事に気づきまして・・orz

レンダリング時の視野内かどうかの絞込みを利用できたら簡単かつ確実な気がするのですが、
さすがにこれは簡単には利用できないのでしょうか?
些細な情報で構いませんので、教えて頂けますと幸いです。
0948名前は開発中のものです。2010/01/23(土) 07:53:21ID:XTmZvqha
>>947
とりあえずカメラの前にいるか後にいるか判定すればよくね?
内積でできるけどそれでうまくいかないって言ってる?
0949名前は開発中のものです。2010/01/23(土) 14:07:28ID:o3xuuS/Q
>カメラの前にいるか後にいるか判定
(;・Д・)な、成る程!
ちょっと内積の復習してきます。ありがとうございますっ orz
0950名前は開発中のものです。2010/01/24(日) 00:22:38ID:bva3IbZK
すみません。
3Dゲームで「キャラクターの頭の上」に名札を表示させる場合、
一枚の画面最前面の板ポリゴンに書き込むのではなく
「名札がキャラ同様に、地形にも隠れる」演出をするには、
ポリゴンを頭上に置いて描くしかないのでしょうか?
何か別の方法が有ったりしますでしょうか。
0951名前は開発中のものです。2010/01/24(日) 00:54:04ID:UdZPpZV2
頭の上に普通にポリゴン書けばいいだけじゃん。
地形に隠したりするなら他の方法は激しく面倒だと思うが。
0952名前は開発中のものです。2010/01/24(日) 02:08:01ID:j566ynkR
>>950
ビルボードで調べればそれじゃね?
0953名前は開発中のものです。2010/01/24(日) 11:44:09ID:FIbykN/e
>>951
>地形に隠したりするなら他の方法は激しく面倒だと思うが。
やはりそうなのですね。ありがとうございます。

>>952
ですね。何か他に負荷の低い方法が有れば・・と思いましたが
表示量を絞るなりで対応しようかと思います。ありがとうございました。
0954名前は開発中のものです。2010/01/24(日) 22:25:29ID:UdZPpZV2
ビルボードなんてモデル出すより遥かに負荷低いだろw
1文字ずつDrawPrimitiveしないで、画面全部の文字まとめて1回のDrawPrimitiveで書けよ。
0955名前は開発中のものです。2010/01/25(月) 01:13:41ID:VSiYVhth
何が負荷だと思ってるのかさっぱりわからないけどなw
0956名前は開発中のものです。2010/01/25(月) 02:03:32ID:HeaS+vGp
>>954
1キャラ単位でDrawPrimitiveする形で作ってました・・
重い処理だとはかねがね見聞きしていましたが、
まとめる方法が有るんですね。 ちょっとやり方を探してみようかと思います。ありがとうございます。
0957名前は開発中のものです。2010/01/25(月) 02:32:12ID:VSiYVhth
>>956
多分必要になるw

ワールド変換 → ビュー変換 → 射影変換 → ビューポート変換

ワールド変換でワールド座標(ワールド座標)
ビュー変換でカメラ座標(カメラのローカル座標)
射影変換で同次クリップ空間(xyが-1〜1になるzは0〜1)
ビューポート変換でスクリーン座標(スクリーンの座標になる)
0958名前は開発中のものです。2010/01/26(火) 00:11:22ID:GHBlcTDW
>>950
キャラクター位置(より少し上か)の3D座標をスクリーン座標に変換(z値もしっかり非同次化)。

変換後の座標を元に、名札大のポリを作成する。
もちろんスクリーン座標系での話だから、任意の大きさにするのは簡単。

名前を描いたテクスチャ(普通は名札ポリと同じ大きさ)を、名札ポリに貼りつけて、
トランスフォーム・ライティング済みのポリとして描画すればZバッファも反映される(隠れる)と。

これが一番簡単じゃないかな。あちこちで処理も省けるし。
ビルボードだと文字の大きさが変わるか、或いは手間かけた割に読みづらくなるよ。
0959名前は開発中のものです。2010/01/26(火) 19:06:38ID:Cnd2uXTE
>>957
ありがとうございます。

>>958
詳細な説明ありがとうございます。
>(z値もしっかり非同次化)
の非同次化とは3D→2D? 0.0fで大丈夫でしょうか。
>トランスフォーム・ライティング済みのポリとして描画すればZバッファも反映される(隠れる)と。
私が唯一知ってる平面ポリゴンの描画方法は、FVFに D3DFVF_XYZRHW を当てる事なのですが、
これだとZ値が0〜1までしか描画されないようで、Zバッファの反映が望めず・・
せっかく答えを書いて下さっているのに、やり方が・・|||llorz
0960名前は開発中のものです。2010/01/26(火) 20:01:04ID:APLpgQP8
元々の3次元座標を座標変換してWで割ったらZの値は0〜1の範囲になるんだ
問題ない
0961名前は開発中のものです。2010/01/26(火) 21:51:45ID:1UMmshNW
>>959
0.0fじゃないですよ。960氏の言うとおりにすれば、z値は0〜1に収まるので、
その値を頂点バッファのz値に。あとは大丈夫そうだね。
0962名前は開発中のものです。2010/01/27(水) 11:02:00ID:1JDTf6lv
>>960-961
テストして上手く行きました、ありがとうございます・・!o(_ _)o
D3DXVec3Projectメソッドの第一引数が3次元ベクトルなのは
この為だったのですね・・。ご助言頂いた方々、本当にありがとうございましたっ orz
0963名前は開発中のものです。2010/02/03(水) 14:24:41ID:Hfya6LBn
ちょっと質問させてくれ。というか無恥な俺にアドバイスをくれ。
VS2008のC#で組んでるんだが、思うように文字が表示できない。

以下コード
private Microsoft.DirectX.Direct3D.Font DisplayFont
〜略〜
private void CreateFont()
{
FontDescription fd = new FontDescription();
fd.Height = 16;
fd.FaceName = "HGP創英角ポップ体";
DisplayFont = new Font(DrawDevice, fd);
}
〜略〜
public void TextsSetting()
{
DisplayFont.DrawText(null, "Hello World", new System.Drawing.Point(16, 16),System.Drawing.Color.White);
}

という感じで画面にHello Worldを書きたいのだが、
MSゴシックやMSPゴシック、MS明朝みたいな当たり障りのないフォント以外は認識されない
HG丸ゴシックや、HGP創英角ポップ体を指定するとPゴシックにされてしまう。
フォント名はWordとかの書式設定の指定コンボボックスからコピペしてるんで、
全/半角が違うとか、そもそもそのフォントが入ってないとかいう問題ではないハズなんだが
MSゴシックやMS明朝は正常に表示されるので、
これらに関しては上記コードの指定方法で問題はないんだと思う。
0964名前は開発中のものです。2010/02/03(水) 14:42:44ID:FZoiDZbl
それは.NETのFontクラスの使い方であって、完全にスレ違い。
0965名前は開発中のものです。2010/02/03(水) 15:05:47ID:Hfya6LBn
>private Microsoft.DirectX.Direct3D.Font
このFontクラスはDirectXのクラスじゃないってことか?

>FontDescription 
こいつもDirectXを追加しないと使えないモノなんだけど・・・

完全にスレ違い?
0966名前は開発中のものです。2010/02/03(水) 15:11:57ID:EDepku+1
どっちにもあるからややこしい。
とりあえずこっちで
【C#】 Managed DirectX 【.NET】
http://pc11.2ch.net/test/read.cgi/gamedev/1195136419/
0967名前は開発中のものです。2010/02/03(水) 15:25:28ID:EDepku+1
ってCharSet指定してみそ。
これで治らなかったらあっちで改めて。
0968名前は開発中のものです。2010/02/03(水) 15:47:08ID:Hfya6LBn
>>967
ありがとうございます。
しかし、申し訳ないが理解できません。
CharSetて、dllImport使うときに指定するやつかね?
この場合「fd.FaceName="***"」こいつに使うことになる?
それとも文字のエンコードとかを指定しろってことですかい?
0969名前は開発中のものです。2010/02/03(水) 15:51:35ID:EDepku+1
>>963のコードに
fd.CharSet = CharacterSet.ShiftJIS;
とか入れろって言ってるんだが。
0970名前は開発中のものです。2010/02/03(水) 15:58:45ID:Hfya6LBn
これは失礼
FontDescriptionメンバにCharSetがあるのに気がついてなかった。
試してみるよ。ありがとう。
0971名前は開発中のものです。2010/02/07(日) 11:45:37ID:NfYbgaUb
すみません、現在テクスチャは全てBMPで読み込んでいるのですが、
偶に見聞きするDDS TGA HDR?というのはBMPより高速に読み込めるのでしょうか?
結局読み込んだ後の速度は変わらないのだと思うのですが・・
テクスチャにBMPをあまり見かけないのは、これ以外にも理由が有るのでしょうか?
0972名前は開発中のものです。2010/02/07(日) 11:51:45ID:hZel436I
BMPはアルファ値が使えないから
半透明のテクスチャなんかを使う場合に他のフォーマット使う
0973名前は開発中のものです。2010/02/07(日) 11:56:07ID:/dFrjeti
BMP=圧縮なしだからファイルサイズがでかい
ってイメージがある
実際は圧縮とか出来るのかな?
0974名前は開発中のものです。2010/02/07(日) 11:59:12ID:laxL7WBE
BMPにも簡単な圧縮オプションがあったような・・・
まぁ、でも普通はサイズデカいから使わんわな。

ランタイムでの速度よりも、配布時のサイズの観点からBMPはあまり使われんのだろうね。

あと、アルファは32bitBMPだったら使えるんじゃなかったっけ??
0975名前は開発中のものです。2010/02/07(日) 12:01:48ID:hZel436I
アプリとして公開するときにデータ直置きだとアレなので
独自で圧縮したファイルを読み込んで展開してテクスチャにってやれば
データ直置きも避けられるし、読み込む速度にフォーマットによってそれ程大きい差も出なくていいと思うんだが
0976名前は開発中のものです。2010/02/07(日) 18:23:11ID:Y251RA+h
>>972-975
ありがとうございます。32bitBMPでアルファを使う事は成功してますね。
そして問題はサイズの方っぽいんですね。
アルファ対応で小さめで読み込み対応の形式・・ちょっと調べてみようかと思います。
ありがとうございました。
0977名前は開発中のものです。2010/02/08(月) 00:23:30ID:yO70DaFt
「DirectInput を使うとレジストリ登録される」は知らんかった
再ビルドする分でものすごい量になってた
0978名前は開発中のものです。2010/02/08(月) 00:48:15ID:WdK9edWF
>>977
アンタのレスみて俺も確認してみたが・・
ものすごいことになってたww
殺すぞMSww
0979名前は開発中のものです。2010/02/08(月) 01:22:20ID:WErBsFGj
正確には「DirectInput8Createで初期化すると」だけどな
0980名前は開発中のものです。2010/02/08(月) 01:37:09ID:vwJjmafm
俺もひどいことになってたw

重複しない方法とかみつけた。
ttp://d.hatena.ne.jp/Niqnem/20080709

DirectInput8Createを使わずに、
CoCreateInstanceを使って生成すればいいって記事もみて、
そのとおりにしてみたら、どうも初期化に失敗してしまった。
簡単に試しただけだからよくわからんが参考までに。
0981名前は開発中のものです。2010/02/08(月) 14:15:14ID:4VRGw2Nq
すみません、テクスチャを描くだけの「ただの素材画像」をテクスチャにしておくのって、無駄でしょうか?
一々両方LockRect〜UnlockRectしてると余計な負担が有りそうな疑問がふとよぎったのですが・・。
0982名前は開発中のものです。2010/02/08(月) 14:49:40ID:4VRGw2Nq
下げ忘れ失礼しました orz
0983名前は開発中のものです。2010/02/08(月) 15:37:34ID:5Xy/jQtE
ところで、
CoInitializeEx(NULL, COINIT_MULTITHREADED);
…でCOMの初期化をしたDirectXアプリをPIXで動かすと、CoInitializeExがRPC_E_CHANGED_MODEを返してうまく動作しないようなんだが、これ仕様なのかね。
CoInitializeだと問題ないようなんだけど…
0984名前は開発中のものです。2010/02/08(月) 17:27:11ID:yO70DaFt
CoUninitializeもよろしく
0985名前は開発中のものです。2010/02/09(火) 00:54:56ID:2v/x01jS
COMだのOLEだのActiveXだの
反吐が出るほど嫌いなんで
出来れば使いたくない
0986名前は開発中のものです。2010/02/10(水) 00:05:24ID:Jt/Ua+0P
DirectInput以外でマウスホイールの回転を直接取得する方法ってありますか?
WM_MOUSEWHEEL経由して取るしかない?
0987名前は開発中のものです。2010/02/10(水) 04:28:34ID:1qPIGpQz
>>986
Raw Input
ホイールに限らず、マウスの生のデータが欲しいときはこれを使う。
レス数が950を超えています。1000を超えると書き込みができなくなります。