トップページ⇒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
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
スレ違いは放置して
0293デフォルトの名無しさんNGNG
>>290
偉そうに発言するのは
未回答の質問に具体的な解決法を提示してからにしてくれないかな?
そうすりゃ誰も文句言わないよ
ここは貴方が大儀を貫く為のスレじゃないの。わかる?

>>292
ごめ、こんなカボチャみたいな頭の奴に反応してしまった漏れも逝ってヨシですね
0294デフォルトの名無しさんNGNG
煽って八つ当たりしないと気分が晴れないほど、デスマーチしてるんだよ。
きっと。
0295デフォルトの名無しさんNGNG
>>286
>MSは最初から.NETをUNIXやMacで動かしたいなんて思っていないと思うのですがどうなんでしょう?
どういう根拠で言ってるのか説明してください ソースはありますか?
妄想ですか?ソースないのなら一度芯でみるのもいいかもしれません

>私だけかもしれませんが、実際Windows以外で動かなくてもいいんですが… っていうか、そんなことしてほしくありません。
ここは貴方のワガママを主張する板ではありません
スレ違いなんで他逝ってください そして二度と戻ってこないでください
http://pc5.2ch.net/test/read.cgi/os/1019057524/l50
http://pc5.2ch.net/test/read.cgi/os/1029750171/l50

276に餌を与えないでください
0296デフォルトの名無しさんNGNG
FPSなどのゲームでよくある、
マウスで視点をグリグリ、
キーボードでカメラを移動というので
つまづいてます。
MATRIX関係の理解ができてないみたいで、
自分で初心者だなぁと思うかぎり。
0297デフォルトの名無しさんNGNG
>>296
マウスの移動量やらキーボードの入力を検出して
Transform.View = Matrix.LookAtLHの値を手動で操作するクラス作ってガンガレ
Transform.View = Matrix.RotationYとかでお手軽にカメラ回せるかとも思ったが
ダメポだったーよ
0298297NGNG
>>296
>Transform.View = Matrix.RotationYとかでお手軽にカメラ回せるかとも思ったが
>ダメポだったーよ

Transform.View = Matrix.LookAtLH * Matrix.RotationY
で、できますた 参考までに
0299デフォルトの名無しさんNGNG
>>298
色々な書籍などを参考にしてみたけど、
なんか円周率やら内積やらでてきて、異様に複雑でした。
割と単純にできるんですね。ためしてみます。
どうもです。

視点の移動については、
平行移動ってやつですかね。
0300デフォルトの名無しさんNGNG
平行移動は
Translation X、Y、Z軸を基準として 水平移動
他は
RotationX X軸を中心に回転 単位は角度ではなくラジアン
RotationY Y軸を中心に回転 単位は角度ではなくラジアン
RotationZ Z軸を中心に回転 単位は角度ではなくラジアン
RotationYawPitchRoll RoutationX、Y、Z を1メソッドで実行
RotationAxis 任意の軸を定義し、その軸を中心に回転
他はヘルプや116がまとめてるゴミHPなどを参照汁
0301デフォルトの名無しさんNGNG
丁寧にありがとう。
実は、日曜日一日かけてもできなかった・・・。
また夜にでもがんばってみよう。
0302301NGNG
Rotation関係をつかっても、
なぜかZ座標がうまくいかなかったので、
C++のサンプルプログラムのを真似したらできました。
COSやらSINやら、よく理解してないですが・・・。
0303デフォルトの名無しさんNGNG
3Dゲーム制作はまず高校を卒業してからにしようね
0304デフォルトの名無しさんNGNG
ここは、井の中の蛙と言うか、ピノキオの多いスレですね。
0305デフォルトの名無しさんNGNG
三角関数は三角定規の形を考えれば理解できる。
0306デフォルトの名無しさんNGNG
とりあえず 「やさしく学べる基礎数学」(ISBN4-320-01683-1) あたりでも読んで出直して来い
ちょうど線形代数と微分積分にしぼってあるからプログラマにはうってつけだぜ
0307デフォルトの名無しさんNGNG
>>306
微積って必要なのか?ちとピンとこない。
0308デフォルトの名無しさんNGNG
>>307
知っておいたほうが物を動かすときに便利でしょう。
■ このスレッドは過去ログ倉庫に格納されています