トップページ⇒tech
1001コメント303KB

C#でDirectX9 初心者の館

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさんNGNG
Windows Longhorn でGDIに取って代わって標準になりそうなDirectX9ですが
GDIと違ってドキュメントも難解で何をすれば描画できるのかさっぱりさっぱりなライブラリです。
その上知っている人はレベルが高すぎて聞いても宇宙語でしす(泣
そんなDirectX9を将来に備えて勉強してみようというスレです。
Microsoftの掲示板
http://www.gdncom.jp/general/bbs/ShowForum.aspx?ForumID=29
SDKをダウンロードできるところ
http://www.microsoft.com/japan/msdn/directx/downloads.asp#CDasp#CD
0192デフォルトの名無しさんNGNG
>>189
待ち時間はSleepなり、正格にやるならマルチメディアタイマーのイベントシグナル(コールバックを使わない方法)等で
処理を休ませることになるが、Win32APIでプログラムを組んだことがないの?
0193デフォルトの名無しさんNGNG
正格→正確
0194デフォルトの名無しさんNGNG
Sleepもマルチメディアタイマーも問題山積なのを隠して語っても仕方ないだろう
とりあえず叩き台になるソース晒せや

*言うだけなら誰でも*
0195デフォルトの名無しさんNGNG
ていうか、そもそもC#自体がWin32APIを直接叩く事を
推奨していない言語仕様だからなぁ。
0196172NGNG
質問でつ チュートリアル2で
頂点バッファ.Lock(0, 0, 0);
といふ頂点をロックする処理がありまつが、

1つめの引数=頂点バッファをロックを開始する位置(バイト単位)
2つめの引数=頂点バッファをロックするサイズ(バイト単位)
でいいのでせうか?
しかも両方のパラメータが0なのでバッファ全体をロックを指定したといふことですよね?

3つめの引数は0になってまつが、
D3DLOCK_DISCARD
D3DLOCK_NO_DIRTY_UPDATE
D3DLOCK_NO_SYSLOCK
D3DLOCK_READONLY
D3DLOCK_NOOVERWRITE
のどれが0だかわからないでつ デファインに対応した数値表とかないんでつかね?
0197デフォルトの名無しさんNGNG
>問題山積なのを
何が問題なのか提示せず反論だけ。

*言うだけなら誰でも*
0198デフォルトの名無しさんNGNG
C#でWin32API使うのは、面倒で非効率です。
素直にMC++と併用するのが無難でしょう。
0199デフォルトの名無しさんNGNG
>>197
マルチメディアタイマーの機種依存、Sleepの精度
Win32APIやったことあるなら知ってるだろ?
そういう話題の振り方して逃げるようなこと書くなや
0200デフォルトの名無しさんNGNG
Sleepに関しては、精度が気になるのであればマルチメディアタイマーと書いている。
マルチメディアタイマーに関しては機種依存といっても、最小間隔の値のが違うだけで、
しかも1msに設定できないのは、そうとう昔のチップセットの話。
3Dを扱うPCスペックのマシンで、最近も問題があるというのなら具体例を挙げて欲しい。
今、機種依存の問題と書くからには、それなりの根拠があった上での話だよね?
0201デフォルトの名無しさんNGNG
         ☆ チン

       ☆ チン  〃  ∧_∧   / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
         ヽ ___\(\・∀・)< DirextXのラッパークラスまだー?
            \_/⊂ ⊂  )_ \________
          / ̄ ̄ ̄ ̄ ̄ ̄ ̄/|
       |  ̄  ̄ ̄ ̄ ̄ ̄ ̄:| :|
       |   愛媛みかん   |

0202デフォルトの名無しさんNGNG
>>196
ここのバカどもには答えられないから他で質問汁
まぁ漏れもそんなバカどもの一人だが
0203デフォルトの名無しさんNGNG
C++側のヘルプを見れば載っているのに、Managedの方しか見ない奴が悪い。
0204デフォルトの名無しさんNGNG
C++イラネ
0205デフォルトの名無しさんNGNG
.Net Frameworkのヘルプを見ても載ってないマイクロソフトが悪い。
0206デフォルトの名無しさんNGNG
スレッド使うとかゆいところに手が届かないというか、
届かなくてもいいとこなら使うって感じなんだが、

ゲーム開発の世界ではふつーに使ってるものなの?
0207202NGNG
>>203
C++のほうも見たが196 の
>どれが0だかわからないでつ デファインに対応した数値表とかないんでつかね?
は俺もわかりませんでつたよ わかる神はいませんか?

>1つめの引数=頂点バッファをロックを開始する位置(バイト単位)
>2つめの引数=頂点バッファをロックするサイズ(バイト単位)
>しかも両方のパラメータが0なのでバッファ全体をロックを指定したといふことですよね?
これはたぶんあってると思う
0208デフォルトの名無しさんNGNG
DirectX SDK 有料にしてでも ちゃんとしたヘルプつけてくださいまし
といいたくなるくらい ManagedのDirectXヘルプはウン○だね・・
0209デフォルトの名無しさんNGNG
#define D3DLOCK_READONLY 0x00000010L
#define D3DLOCK_DISCARD 0x00002000L
#define D3DLOCK_NOOVERWRITE 0x00001000L
#define D3DLOCK_NOSYSLOCK 0x00000800L
#define D3DLOCK_DONOTWAIT 0x00004000L

#define D3DLOCK_NO_DIRTY_UPDATE 0x00008000L

これじゃなくて?
0210デフォルトの名無しさんNGNG
>>208
> DirectX SDK 有料にしてでも ちゃんとしたヘルプつけてくださいまし
DirectX5以前までは英語版のヘルプしかなく、
和訳された辞書みたいな分厚い本が2,3万で売ってた気がするけどな。
0211デフォルトの名無しさんNGNG
フラグを付けなければ、フラグにある効力は一切使用しないだけ。
デフォルトもへったくれもない。
0212デフォルトの名無しさんNGNG
>>210
ああ、あったな。「馬鹿高い本だなぁ。」と驚いた。
なつかしい。
Managed DirectX(C#)用の詳細に書いた本が今でれば、
2,3万でも買うんだけどなぁ。
0213デフォルトの名無しさんNGNG
>>209
それ、どこに載ってた?
0x〜ってことは16進数だよね・・
10進数値が0のやつは1つもないね
0214デフォルトの名無しさんNGNG
>>213
>[in] 実行するロックの種類を記述する、0 個以上のロッキング フラグの組み合わせ。このメソッドに使用できるフラグは次のとおり。

>0 個以上のロ
これじゃねーの

>>209はC++のヘッダファイルより
0215172NGNG
>>214
いつのまにか神が降臨してる〜
つい最近c#はじめた漏れにC++のヘッダファイル云々ってムリポでつよママン
つまり 0を指定してるのでフラグつかってませんってことでつね
ボロHPにまとめておきまつ
0216デフォルトの名無しさんNGNG
あえてC#でやるからには、
C#の特性を存分に使うべきだね。
そうしなければ、C++でやったほうが
情報も多いし、パフォーマンスも優れるし良いと思う。
まあ、あたりまえのことだけど・・・。
0217デフォルトの名無しさんNGNG
>>216
.Net FrameworkにDirextXのラッパークラスが載ってない以上、
C#でDirectXを使うメリットはないと思う…

そう言う意味では>>201や>>205は的を射ている。

つか、WindowsもOfficeみたく、殆どの機能をクラスで扱える
ようになればいいのに。
0218デフォルトの名無しさんNGNG
ビデオカードのテクスチャサイズ制限(256x256までとか、2のべき乗とか)を
プログラムで取得するにはどうしたらいいでしょうか?

RADEON9600で640x480のテクスチャ読み込ませたら問題なく使えてしまったので
もしかしたらsummer版から内部で適当に処理してくれてるのかと思ったのですが
そうでもない気がしてきたので…。

VRAMのテクスチャバッファ残量を動的に取得する方法もあるようでしたら知りたいです。
0219デフォルトの名無しさんNGNG
CAPS?
0220218NGNG
>>219
caps見れば良かったんですね。
あっさり解決しました。ありがとうです。
0221デフォルトの名無しさんNGNG
     C++                 C#
DrawIndexedPrimitiveUP   DrawIndexedPrimitives
DrawIndexedPrimitive     DrawIndexedUserPrimitives
DrawPrimitiveUP        DrawPrimitives
DrawPrimitive          DrawUserPrimitives

これでいいですか?
0222221NGNG
すみません。よく調べたらUP系が逆でした…
0223デフォルトの名無しさんNGNG
>221-222
その無駄な変化はなんなんですか...
0224デフォルトの名無しさんNGNG
D3DX系(Sprite、Matrix)と自前系(Primitive)を比較してみると機種にもよるがフレームレートの差は2〜5倍もある。
糞重いD3DX使ってる奴は艇脳負け組って意味だろw
0225デフォルトの名無しさんNGNG
差はあっても、カード依存という壁をなんとかしてくれるD3DX系の使いよさは、
多くのユーザーを抱える場所では開発コストを抑えられるたまらない恩恵なわけで。
0226デフォルトの名無しさんNGNG
どこの板でも定期的に>>224みたいな馬が涌いてくるね
0227デフォルトの名無しさんNGNG
土日の定期便みたいなもんだ
0228デフォルトの名無しさんNGNG
馬鹿定期便。
0229デフォルトの名無しさんNGNG
>>224
D3DXが無ければXファイルや形状データ、座標を扱うのって難しくないですか?
自前ライブラリを持つメーカーならともかく、一般人ならD3DXに頼らざるを得ないと思う。

初心者の意見ですけど。
0230デフォルトの名無しさんNGNG
速度云々よりは、内部構造を理解しておかないと、
用意されていない機能を実現しようとするときに困ることになる。
実用出来るかどうかは別にしても、Xファイルの読み込みからレンダリングまでは、
ある程度自分で作れるようになっておくに超したことはない。
まあ何を作るかにもよるので、何が必要なのかは各々で判断すればいい。
0231デフォルトの名無しさんNGNG
自作ライブラリ作るのが生きがいですってならともかく
漏れみたいに、ただヌルい3Dゲを作りたいって人は
レンダリングまで自分でやりたいなんて到底思わないかと
0232172NGNG
Microsoft.DirectX.Direct3D.Pool.の
Default
Managed
Scratch
SystemMemory
の違いがイマイチよくわからんでつ よくわからない場合はとりあえずDefaultを選べってことでつか?
0233デフォルトの名無しさんNGNG
今後
C#が、C++での実装に
パフォーマンスで追いつくことは不可能かな?
0234デフォルトの名無しさんNGNG
GDI+が異常に遅かったのは自分でチャックしたんだけど、トータルでも結構遅いの?
0235デフォルトの名無しさんNGNG
>>233
ノートPCの性能がデスクトップに追いつくの?
ってのと同等の質問に見えた漏れは夢がないんでしょうか・・?
0236デフォルトの名無しさんNGNG
C#やJavaに日頃慣れていると、
C++の開発が非効率に思えてね。
0237デフォルトの名無しさんNGNG
>>234
俺も偏った部分しかチャックしてないが、あんま速くなかったよ。
でもま、あれは簡単に扱えるって意味でのライブラリだから、あんなもんでいいと思うよ。

チャック?
0238デフォルトの名無しさんNGNG
GDI+はDIBでゴリゴリやってるのと同じだし、
別にDirect3D使ってるわけじゃないし、
遅いのはC#のせいじゃないだろ。
0239デフォルトの名無しさんNGNG
じゃあ、C#+DirectXで
パフォーマンスは追いつくわけだ。
0240デフォルトの名無しさんNGNG
         ☆ チン

       ☆ チン  〃  ∧_∧   / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
         ヽ ___\(\・∀・)< DirextXのラッパークラスまだー?
            \_/⊂ ⊂  )_ \________
          / ̄ ̄ ̄ ̄ ̄ ̄ ̄/|
       |  ̄  ̄ ̄ ̄ ̄ ̄ ̄:| :|
       |   愛媛みかん   |
0241デフォルトの名無しさんNGNG
完全にスレ違いけど、GDI+ ってα値付きで絵が描けるんで DirectX のテクスチャに
絵を書くときとても便利だよね。線とかパスのスミージングも出来るし。
0242デフォルトの名無しさんNGNG
 ↑
スミージング・・・何語だよ
0243デフォルトの名無しさんNGNG
誰か>>232に答えられる神はいないのか?
0244デフォルトの名無しさんNGNG
用途によって異なるとしか言いようがない。
ヘルプを読めば分かるだろ。
0245デフォルトの名無しさんNGNG
ヘルプ読んでもわからない馬鹿がここにいますが何か?
ヘルプ読めばわかるって言うならこんなスレいらないよね
0246デフォルトの名無しさんNGNG
ヘルプは粗末すぎだよな。
メソッドやフィールド名で推測するしかないし。
高くてもいいから、分厚い本でもだしてくれ。
0247デフォルトの名無しさんNGNG
C++のヘルプも読め、そっちにきっちり書いてあるから。
0248デフォルトの名無しさんNGNG
どこがわからないとか言わないと回答のしようもないよ
まさか専門用語がわからないなどとググりもせずホザイテマスカ?
0249デフォルトの名無しさんNGNG
>>247のとおり、C++側に大抵書いてある。
若干名前が変わってるが手順などほとんど同じだし。
0250デフォルトの名無しさんNGNG
>>246
「高くてもいいから、分厚い本でもだしてくれ」

マニュアル登場

「もっとわかりやすい本だしてくれ」

分かりやすいマニュアル本登場

「なんかマンドクセー!」
0251デフォルトの名無しさんNGNG
C++でDirectX慣れていれば、
C#でもすらすらと開発できそうなんだけどなぁ。
0252デフォルトの名無しさんNGNG
>>251
「初心者」っていうのは、C# にも DirectX にも、ドキュメント読むことにも、考えることにも、
推測することにも、質問することにも、調べることにも初心者なんですよ。

どれか一つでもうまく出来るようなら、他のことも大抵できるようになって、もう初心者じゃ
なくなるから。
0253デフォルトの名無しさんNGNG
C++のドキュメント読まないといけないなんてC#は糞ですね?
0254デフォルトの名無しさんNGNG
>>252
それは人間の初心者。
今までの人生で成長が存在しないとは、いったい何をしていたんだか。
0255デフォルトの名無しさんNGNG
単純にドキュメントだけにフォーカスをあてるなら253の言う通りC#&Xはクソですな
0256デフォルトの名無しさんNGNG
C++も2003summerの日本語ドキュメントないよ
0257デフォルトの名無しさんNGNG
>>253
いや、マイクロソフトがヽ('A`)ノウンコー
0258デフォルトの名無しさんNGNG
RHW=同次空間上のトランスフォームした頂点。(x,y,z) データは既に w で除算 (w の逆数を乗算) されている。

結局んとこ、この値を設定すると何がどうなるのかよくわかりませぬ
まったく指定しなくてもチュートリアルは普通に動くみたいだし
0259デフォルトの名無しさんNGNG
テクスチャマッピングの補正につかうんだったかなー
0260デフォルトの名無しさんNGNG
くだらん論議してるときは盛り上がるのに
質問でるととたんに静かになるんやね
>>258はそのくらい自分で調べろとか言われちゃうんだろうね
0261デフォルトの名無しさんNGNG
>>259
ためしにテクスチャ張って数値をいろいろ弄ってみたらワカッターよ
テクスチャを張ってから数値変更すると設定した数値ぶん、テクスチャが歪むのね
0262デフォルトの名無しさんNGNG
メディアプレイヤーのようにフォームの一部分にDirectXの画面を表示させたいのですが
C#で可能でしょうか?
0263デフォルトの名無しさんNGNG
可能
0264デフォルトの名無しさんNGNG
>フォームの一部分にDirectXの画面を表示させたいのですが
フォームに絵boxを配置して
Deviceの引数に絵boxを指定してもダメポだったよ
どうやって遣るんだかワカンネ
誰か教えれ
0265デフォルトの名無しさんNGNG
デバイスに指定するのはトップフレームであって表示する場所ではない。
ただそこがデフォルトになるだけの話。
描画先のウインドウを指定するのは描画する時点で、指定しなければデフォルトが適用されるだけ。
少しはメソッドのヘルプを読め。
0266デフォルトの名無しさんNGNG
>>264
Rectangle reg = new Rectangle();
reg.X=100;
reg.Y=100;
reg.Width=200;
reg.Height=200;
device.Present(reg,null,false);

>>265
最後の一行が余計杉
どいつもこいつもヘルプヘルプうぜーんだよ
ヘルスにでもいってこいや
0267デフォルトの名無しさんNGNG
>>266
トンクス!!
0268デフォルトの名無しさんNGNG
UNIX系やMacで動く、フリーの.NET動作環境なんてあったんだね。
既にほとんどの標準クラスが動くようになっているそうなので、Managed DirectXも
移植されれば相当面白いことになりそうな気がする。

0269デフォルトの名無しさんNGNG
GUI部分が移植されていないのに、DirectXなんて無理に決まってるだろう。
何でおまえみたいな頭の悪い奴が存在するのか、理解に苦しむ。
0270デフォルトの名無しさんNGNG
Windows Formを作っているプロジェクトの存在をご存じないのか269は。
0271デフォルトの名無しさんNGNG
マイケルソフトはja●aみたいに
他OSでも.net環境を整えたいと思ってるんだから
生暖かく見守ってればいいんだよバカチン

そしてここでは Win + C#.net + DirectX の話をしてればそれでいいじゃないか
.net環境の話は終了 続きは他で殺れ
0272デフォルトの名無しさんNGNG
初心者スレで、鼻高々としたい奴は要らない。
ピノキオはどっかいってくれ。
0273デフォルトの名無しさんNGNG
>>270
互換性がとれていないということを存じないのか270は?
0274デフォルトの名無しさんNGNG
>>273
オマイもしつこいね まったく
0275デフォルトの名無しさんNGNG
ライトのcommit()の説明が
指定したライトに対する遅延ライト設定を適用する。
だけなんですが 遅延ライト設定ってのは何なんでしょうか?
0276デフォルトの名無しさんNGNG
>>274
これに懲りたら、考えなしにもういい加減なことを言う癖を直せよ。
0277デフォルトの名無しさんNGNG
C++の本を読みながら勉強をしているのですが、
D3DXVec3TransformCoordって、
C#だとそれらしきメソッド名のものが見つからなかったのですが、
メソッドは何になるのでしょうか?
0278デフォルトの名無しさんNGNG
見つけました。
Vector3.TransformCoordinateというメソッドでした。
Matrixのほうを探してました・・・。
0279デフォルトの名無しさんNGNG
>>276
なんで初心者スレにピノキオが混入されてるの?
なにが「これに懲りたら」だよ、何様のつもり?キモ杉
つまらないこと言ってる暇があったら質問に答えろよ
0280デフォルトの名無しさんNGNG
質問回が甘いくせに276みたいな馬や鹿が多いスレはここですか
0281デフォルトの名無しさんNGNG
>>279
>何様のつもり?
俺様。
いい加減なことを言ったことについて、反省する様子は無しか。
まあ考え無しで発言してしまうからには、自分を省みることなど出来ないだろう。
せめて実際に使ってみれば、どんなに使えない物なのかぐらい分かるんだが。
口先だけでいい加減なことを言っている暇があったら、自分で試してからにしろよ。
0282デフォルトの名無しさんNGNG
>>281
会社で虐められてるんですか?
明日になるのが不安なんですなw
0283デフォルトの名無しさんNGNG
明日からは、適当なことを言う前にまず試してみる人間になれることを祈ってるよ。
教訓を生かしてがんばれよ。
0284デフォルトの名無しさんNGNG
あまりに煽りが唐突すぎて
うまく話をそらせず自爆した典型例だな
0285デフォルトの名無しさんNGNG
276 281 283
そろそろ皆に嫌われてるのに気付かないのかね
0286デフォルトの名無しさんNGNG
あの、横槍すみません。
MSは最初から.NETをUNIXやMacで動かしたいなんて思っていないと思うのですがどうなんでしょう?
私だけかもしれませんが、実際Windows以外で動かなくてもいいんですが…
っていうか、そんなことしてほしくありません。
0287デフォルトの名無しさんNGNG
なんで?
0288デフォルトの名無しさんNGNG
>>286
コンソール部分はMS自らがFreeBSD用に移植している。
少しは調べてから発言しろ。
0289デフォルトの名無しさんNGNG
誰か、276を止めるメソッドを教えてください。かなり深刻なんです。
0290デフォルトの名無しさんNGNG
きちんと自分で試すなり調べるなりした上での発言なら突っ込む必要がないのだが、
何故聞きかじった知識だけで語ろうとするのか理解に苦しむ。
FreeBSD用ならPortsからライセンスに同意するだけで馬鹿でもインストールできるから、少しは試せ。
コンソールや通信部分に関してはWindows側でコンパイルした物がそのまま動く。
GUIはMSのフレームワークを使う限り、エミュレータを除けば何を使ってもWindows側で作った物は動かない。
GUIも独自実装と、MS互換擬きがあるが、実際に使い物になるかどうか自分で試してみろ。
その上で実際に使えると判断したのなら、技術的に突っ込めばいい。
実際にある物を試さないで、想像だけで語って何の意味がある?

私を嫌おうが構わないが最低限、想像ではなくきちんと試せ。
そうすればいちいち突っ込む必要はなくなる。
0291デフォルトの名無しさんNGNG
いちいち言葉が多いなぁ。
0292デフォルトの名無しさんNGNG
スレ違いは放置して
■ このスレッドは過去ログ倉庫に格納されています