C#でDirectX9 初心者の館
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
NGNGGDIと違ってドキュメントも難解で何をすれば描画できるのかさっぱりさっぱりなライブラリです。
その上知っている人はレベルが高すぎて聞いても宇宙語でしす(泣
そんなDirectX9を将来に備えて勉強してみようというスレです。
Microsoftの掲示板
http://www.gdncom.jp/general/bbs/ShowForum.aspx?ForumID=29
SDKをダウンロードできるところ
http://www.microsoft.com/japan/msdn/directx/downloads.asp#CDasp#CD
0152デフォルトの名無しさん
NGNG同人ゲーで一儲けしようと思ってるんだよ。
相手にすんな。
0153デフォルトの名無しさん
NGNGネットゲームでプロトコルがバレたらまずいなどの理由ならわかるが
商用全般を指しているようだ
>ソースが綺麗とか価値があるないとかは関係ないぞ
と書いてあるので技術流出も関係なさそうだ
いまいち想定している危険が想像できない
0154デフォルトの名無しさん
NGNG015554
NGNGスレッドを使うという話になってなかったから。
いま仕方ないのでスレッドでやってます。
でもWndProcで出来ないというのもイヤですよね?
せっかく聞いたのに。
0156デフォルトの名無しさん
NGNG何かしらのメッセージが発生した時に来る。
つまり、PeekMessageの中って事になるわけで…。
それだったらループには組み込めないんだけど、
WinProcで回してる人はどうやってやってるんだろう?
それよりも実際にいるの?
0157デフォルトの名無しさん
NGNGControlクラス上のイベントハンドラの定義されていないようなメッセージの場合は
Win32APIの時と同じようにswitch,case文で自前でメッセージ処理を行えばいい。
ドキュメントのControl.WndProcの欄を見ればやり方が書いてある。
てか普通、気にしなくてもいいと思う。
>>140
その中でループを組んじゃダメ。
WndProgメソッド自体をループだと思えばいい(毎フレーム呼ばれる、と思う)
アプリの初期化処理はApprication.run()以前に済ませておくか、formのコンストラクタ内でやる。
描画に関してはOnPaintをオーバーライドしてDevice.Begin()〜end()を含んだRander()なりを入れればOK。
This.invalidate()メソッドをオーバーライドしたWndProc()の最後に入れてやると、
実行後ほおっておいても再描画を繰り返してくれる。
チョット分かりにくい説明ですまんが
0159157
NGNGSummer2004版ではおそらくDoEventの改善は行われるはずだから
リリースまで待ってみるのもいい。
0160157
NGNGprotected override void WndProc(ref Message m)
{
switch(m.Msg) { // メッセージ処理
case 0xxxx:
break;
}
Game.mapDraw(); // マップ処理
Game.characterDraw(); // キャラクタ処理
Game.padInput(); //入力処理
base.WndProc(ref m); // 親クラスにもメッセージを送る(必須)
this.Invalidate(); // 画面の更新(OnPaint()を呼んで再描画する)
}
0161デフォルトの名無しさん
NGNG理由と必要性がさっぱり分からない。
0162デフォルトの名無しさん
NGNG必要に応じて別スレッドからSendMessageでユーザーメッセージを処理させればいいだけだし。
何故イベントリブンを無意味にするような方法を使おうとするのだろう?
0163デフォルトの名無しさん
NGNG016454
NGNGそのソースを見る限り「Invalidate」のおかげで
WndProcに戻ってきてるのでは……。
だったらそもそもOnPaintの中に書けばいいんじゃないかな。
0165デフォルトの名無しさん
NGNGウインドウの反応速度が落ちて重く感じることになるという。
0167デフォルトの名無しさん
NGNG他のスレッドが重い処理をするととたんに回ってこなくなるはで、さあ大変。
0168デフォルトの名無しさん
NGNGスレッドはアクションゲームには向かないし初心者には同期とるのもね。デッドロックかかちゃいそう。
>>140
この答えはいろいろあるとおもいますが
>>60の最後に書いてるけど
// Windowsメッセージを処理します。
Application.DoEvents();
をつけたせばウインドウズのメッセージを処理できるー>無限ループにならない。
僕はWinProcやOnPaintはつかってないねぇ。
0169デフォルトの名無しさん
NGNGあなたがどうしようもないほどの馬鹿だということが分かりました。
0170デフォルトの名無しさん
NGNGすべてのメッセージがそこを通るんだから描画と処理の同期がおかしくなる
0171デフォルトの名無しさん
NGNG0172デフォルトの名無しさん
NGNG0,
DeviceType.Hardware,
フォーム,
CreateFlags.SoftwareVertexProcessing,
パラメータ );
のときに 1つめの引数が0になっていますが0ってどういう意味でしょうか?
C++ヘルプでは
Adapter[in]ディスプレイ アダプタを示す序数。D3DADAPTER_DEFAULT は常にプライマリディスプレイ アダプタである。
とありますが 0はプライマリディスプレイアダプタなんでしょうか?
0173デフォルトの名無しさん
NGNG0174172
NGNGdefineの数値に対応してるんでつね、
ありがとうございます
にしてもC++のへるぷないとどうにもなりまつぇんね・・
おとなしくC++でヤったほうがよいのかとすら思えてきますた
0175デフォルトの名無しさん
NGNG自分のこと書いて楽しいですか?
0176デフォルトの名無しさん
NGNG馬鹿って言い方は失礼だと思うぞ。
単に、ここ最近のWindowsの仕組みを知らずに言い放った愚か者ってだけ。
0177デフォルトの名無しさん
NGNG0178デフォルトの名無しさん
NGNG0179デフォルトの名無しさん
NGNGここ最近って何か変わったの?
0180デフォルトの名無しさん
NGNG阿呆なことは考えない。
0181デフォルトの名無しさん
NGNGおまいの理屈だと
チュートリアル作ったやつも
VB厨って解釈できるが
それについて何かコメントおながいしまつ
もうね、ループすりゃどうだっていいじゃん
偉そうなこと書くなら
おまいらの言う理想のループ処理とやらを書いてくれ
参考にさせてもらうから
0182デフォルトの名無しさん
NGNG0183デフォルトの名無しさん
NGNG0184デフォルトの名無しさん
NGNG0185デフォルトの名無しさん
NGNGおまいの理想とする
スレッド使ったコードを晒してください
話はそれからだ
*言うだけなら誰でも*
0186デフォルトの名無しさん
NGNGいい加減、うっとおしくなってきた。
0187デフォルトの名無しさん
NGNG何故C#になるとスレッドを使おうとしないのか不思議で仕方がない。
別にC#特有の問題が存在するわけでもないのに。
0188デフォルトの名無しさん
NGNGC#ではメインループとウィンドウメッセージを意識せずにコードが
書けるからでは?
0189デフォルトの名無しさん
NGNGスレッドの場合
たとえば16ms毎にゲーム処理のスレッドを呼び出すとすると、もしスレッドの処理が3msで終わってしまえば
次の呼び出しまでの13msは待ち時間となり無駄になるだろ?
でもメインループなら、マシンの限界まで処理を回ることができる。
お前ってMFCしか使ったこと無いの?
0190デフォルトの名無しさん
NGNGあと、アクションゲームの場合は、おそらくイント単位で処理することになるから、
メインループでもスレッドでも、待ち方が違うだけで同期処理は同じになると思われ。
0191デフォルトの名無しさん
NGNG0192デフォルトの名無しさん
NGNG待ち時間はSleepなり、正格にやるならマルチメディアタイマーのイベントシグナル(コールバックを使わない方法)等で
処理を休ませることになるが、Win32APIでプログラムを組んだことがないの?
0193デフォルトの名無しさん
NGNG0194デフォルトの名無しさん
NGNGとりあえず叩き台になるソース晒せや
*言うだけなら誰でも*
0195デフォルトの名無しさん
NGNG推奨していない言語仕様だからなぁ。
0196172
NGNG頂点バッファ.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素直にMC++と併用するのが無難でしょう。
0199デフォルトの名無しさん
NGNGマルチメディアタイマーの機種依存、Sleepの精度
Win32APIやったことあるなら知ってるだろ?
そういう話題の振り方して逃げるようなこと書くなや
0200デフォルトの名無しさん
NGNGマルチメディアタイマーに関しては機種依存といっても、最小間隔の値のが違うだけで、
しかも1msに設定できないのは、そうとう昔のチップセットの話。
3Dを扱うPCスペックのマシンで、最近も問題があるというのなら具体例を挙げて欲しい。
今、機種依存の問題と書くからには、それなりの根拠があった上での話だよね?
0201デフォルトの名無しさん
NGNG☆ チン 〃 ∧_∧ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
ヽ ___\(\・∀・)< DirextXのラッパークラスまだー?
\_/⊂ ⊂ )_ \________
/ ̄ ̄ ̄ ̄ ̄ ̄ ̄/|
|  ̄  ̄ ̄ ̄ ̄ ̄ ̄:| :|
| 愛媛みかん |
0202デフォルトの名無しさん
NGNGここのバカどもには答えられないから他で質問汁
まぁ漏れもそんなバカどもの一人だが
0203デフォルトの名無しさん
NGNG0204デフォルトの名無しさん
NGNG0205デフォルトの名無しさん
NGNG0206デフォルトの名無しさん
NGNG届かなくてもいいとこなら使うって感じなんだが、
ゲーム開発の世界ではふつーに使ってるものなの?
0207202
NGNGC++のほうも見たが196 の
>どれが0だかわからないでつ デファインに対応した数値表とかないんでつかね?
は俺もわかりませんでつたよ わかる神はいませんか?
>1つめの引数=頂点バッファをロックを開始する位置(バイト単位)
>2つめの引数=頂点バッファをロックするサイズ(バイト単位)
>しかも両方のパラメータが0なのでバッファ全体をロックを指定したといふことですよね?
これはたぶんあってると思う
0208デフォルトの名無しさん
NGNGといいたくなるくらい ManagedのDirectXヘルプはウン○だね・・
0209デフォルトの名無しさん
NGNG#define D3DLOCK_DISCARD 0x00002000L
#define D3DLOCK_NOOVERWRITE 0x00001000L
#define D3DLOCK_NOSYSLOCK 0x00000800L
#define D3DLOCK_DONOTWAIT 0x00004000L
#define D3DLOCK_NO_DIRTY_UPDATE 0x00008000L
これじゃなくて?
0210デフォルトの名無しさん
NGNG> DirectX SDK 有料にしてでも ちゃんとしたヘルプつけてくださいまし
DirectX5以前までは英語版のヘルプしかなく、
和訳された辞書みたいな分厚い本が2,3万で売ってた気がするけどな。
0211デフォルトの名無しさん
NGNGデフォルトもへったくれもない。
0212デフォルトの名無しさん
NGNGああ、あったな。「馬鹿高い本だなぁ。」と驚いた。
なつかしい。
Managed DirectX(C#)用の詳細に書いた本が今でれば、
2,3万でも買うんだけどなぁ。
0213デフォルトの名無しさん
NGNGそれ、どこに載ってた?
0x〜ってことは16進数だよね・・
10進数値が0のやつは1つもないね
0214デフォルトの名無しさん
NGNG>[in] 実行するロックの種類を記述する、0 個以上のロッキング フラグの組み合わせ。このメソッドに使用できるフラグは次のとおり。
>0 個以上のロ
これじゃねーの
>>209はC++のヘッダファイルより
0215172
NGNGいつのまにか神が降臨してる〜
つい最近c#はじめた漏れにC++のヘッダファイル云々ってムリポでつよママン
つまり 0を指定してるのでフラグつかってませんってことでつね
ボロHPにまとめておきまつ
0216デフォルトの名無しさん
NGNGC#の特性を存分に使うべきだね。
そうしなければ、C++でやったほうが
情報も多いし、パフォーマンスも優れるし良いと思う。
まあ、あたりまえのことだけど・・・。
0217デフォルトの名無しさん
NGNG.Net FrameworkにDirextXのラッパークラスが載ってない以上、
C#でDirectXを使うメリットはないと思う…
そう言う意味では>>201や>>205は的を射ている。
つか、WindowsもOfficeみたく、殆どの機能をクラスで扱える
ようになればいいのに。
0218デフォルトの名無しさん
NGNGプログラムで取得するにはどうしたらいいでしょうか?
RADEON9600で640x480のテクスチャ読み込ませたら問題なく使えてしまったので
もしかしたらsummer版から内部で適当に処理してくれてるのかと思ったのですが
そうでもない気がしてきたので…。
VRAMのテクスチャバッファ残量を動的に取得する方法もあるようでしたら知りたいです。
0219デフォルトの名無しさん
NGNG0221デフォルトの名無しさん
NGNGDrawIndexedPrimitiveUP DrawIndexedPrimitives
DrawIndexedPrimitive DrawIndexedUserPrimitives
DrawPrimitiveUP DrawPrimitives
DrawPrimitive DrawUserPrimitives
これでいいですか?
0222221
NGNG0223デフォルトの名無しさん
NGNGその無駄な変化はなんなんですか...
0224デフォルトの名無しさん
NGNG糞重いD3DX使ってる奴は艇脳負け組って意味だろw
0225デフォルトの名無しさん
NGNG多くのユーザーを抱える場所では開発コストを抑えられるたまらない恩恵なわけで。
0226デフォルトの名無しさん
NGNG0227デフォルトの名無しさん
NGNG0228デフォルトの名無しさん
NGNG0229デフォルトの名無しさん
NGNGD3DXが無ければXファイルや形状データ、座標を扱うのって難しくないですか?
自前ライブラリを持つメーカーならともかく、一般人ならD3DXに頼らざるを得ないと思う。
初心者の意見ですけど。
0230デフォルトの名無しさん
NGNG用意されていない機能を実現しようとするときに困ることになる。
実用出来るかどうかは別にしても、Xファイルの読み込みからレンダリングまでは、
ある程度自分で作れるようになっておくに超したことはない。
まあ何を作るかにもよるので、何が必要なのかは各々で判断すればいい。
0231デフォルトの名無しさん
NGNG漏れみたいに、ただヌルい3Dゲを作りたいって人は
レンダリングまで自分でやりたいなんて到底思わないかと
0232172
NGNGDefault
Managed
Scratch
SystemMemory
の違いがイマイチよくわからんでつ よくわからない場合はとりあえずDefaultを選べってことでつか?
0233デフォルトの名無しさん
NGNGC#が、C++での実装に
パフォーマンスで追いつくことは不可能かな?
0234デフォルトの名無しさん
NGNG0235デフォルトの名無しさん
NGNGノートPCの性能がデスクトップに追いつくの?
ってのと同等の質問に見えた漏れは夢がないんでしょうか・・?
0236デフォルトの名無しさん
NGNGC++の開発が非効率に思えてね。
0237デフォルトの名無しさん
NGNG俺も偏った部分しかチャックしてないが、あんま速くなかったよ。
でもま、あれは簡単に扱えるって意味でのライブラリだから、あんなもんでいいと思うよ。
チャック?
0238デフォルトの名無しさん
NGNG別にDirect3D使ってるわけじゃないし、
遅いのはC#のせいじゃないだろ。
0239デフォルトの名無しさん
NGNGパフォーマンスは追いつくわけだ。
0240デフォルトの名無しさん
NGNG☆ チン 〃 ∧_∧ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
ヽ ___\(\・∀・)< DirextXのラッパークラスまだー?
\_/⊂ ⊂ )_ \________
/ ̄ ̄ ̄ ̄ ̄ ̄ ̄/|
|  ̄  ̄ ̄ ̄ ̄ ̄ ̄:| :|
| 愛媛みかん |
0241デフォルトの名無しさん
NGNG絵を書くときとても便利だよね。線とかパスのスミージングも出来るし。
0242デフォルトの名無しさん
NGNGスミージング・・・何語だよ
0243デフォルトの名無しさん
NGNG0244デフォルトの名無しさん
NGNGヘルプを読めば分かるだろ。
0245デフォルトの名無しさん
NGNGヘルプ読めばわかるって言うならこんなスレいらないよね
0246デフォルトの名無しさん
NGNGメソッドやフィールド名で推測するしかないし。
高くてもいいから、分厚い本でもだしてくれ。
0247デフォルトの名無しさん
NGNG0248デフォルトの名無しさん
NGNGまさか専門用語がわからないなどとググりもせずホザイテマスカ?
0249デフォルトの名無しさん
NGNG若干名前が変わってるが手順などほとんど同じだし。
0250デフォルトの名無しさん
NGNG「高くてもいいから、分厚い本でもだしてくれ」
マニュアル登場
「もっとわかりやすい本だしてくれ」
分かりやすいマニュアル本登場
「なんかマンドクセー!」
0251デフォルトの名無しさん
NGNGC#でもすらすらと開発できそうなんだけどなぁ。
0252デフォルトの名無しさん
NGNG「初心者」っていうのは、C# にも DirectX にも、ドキュメント読むことにも、考えることにも、
推測することにも、質問することにも、調べることにも初心者なんですよ。
どれか一つでもうまく出来るようなら、他のことも大抵できるようになって、もう初心者じゃ
なくなるから。
■ このスレッドは過去ログ倉庫に格納されています