トップページ⇒tech
983コメント280KB

DirectX C# vol.1

■ このスレッドは過去ログ倉庫に格納されています
0001 NGNG
DirectX9 SDK リリース!
C#での話題をどうぞ。
0652デフォルトの名無しさんNGNG
この程度のことなど自分で解法見つけろってこったな。
その辺の甘えが見えるから、誰も直接答えようとしない。
0653デフォルトの名無しさんNGNG
とにかく、自分の望む回答が帰ってこないからって暴れるのはやめてくれ。ほんとに。
0654デフォルトの名無しさんNGNG
>>651
C#だろうがなんだろうが、必要なら作ればいいだけなんだが
何でも用意されていないと気が済まないのなら
3Dソフトのスクリプトでも使えばいい

掲示板で「クダラン」ことを書いている半日の間に、
まじめにコーディングしていればすでに目的は達成されていたはず
0655デフォルトの名無しさんNGNG
しかしなんだな、荒れた原因は、余裕とか楽勝って書くからだろ。
半日、まじめにコーディングするのが余裕とは言えないだろ。
すくなくとも、「出来るけれども、面倒。」とか書いとけば良かったんじゃないか?
0656デフォルトの名無しさんNGNG
>>650にとっては、すべてのコーディングは楽勝なんだよ。エリートなんだよ。
0657デフォルトの名無しさんNGNG
>>655
半日というのは遅くてということなんだけど
本当にそのくらいかかってしまうのなら、
日頃コーディングを回避しているせいで
必要なときに素早く適応できないということになる
0658デフォルトの名無しさんNGNG
とてもじゃないが、簡単なコーディングとは思えない。
Web上で、具体的なコーディングを発見したことないし。
>>645レベルじゃC#じゃムリ。
0659デフォルトの名無しさんNGNG
とりあえず作り始めてみて、分からなくなったら質問しにくればいい
無理と思って諦めたら、本当に無理になるよ
0660デフォルトの名無しさんNGNG
Surface.Lock()してBitmapに転送してSaveしてやれば終わりのような。
0661デフォルトの名無しさんNGNG
・_・y━””ここで一服
http://homepage3.nifty.com/coco-nut/
そしてあぷろだはここ
http://www.k-514.com/imgbbs1/imgboard.cgi
0662VS.NET2003NGNG
> 636

> DX9のCDから Bin\DXUtils\Visual Studio 7.0 Wizards  の中身を
対応する場所へコピー

対応する場所って具体的に何を指すの?
0663直リンNGNG
http://homepage.mac.com/yuuka20/
0664デフォルトの名無しさんNGNG
DirextX9のウィザードでDirect3Dだけ指定のブランクを作成しました。
Render内でframeStatsだけ表示させてみたのですが
ウィンドウモードだとフレームレートが30fps弱しか出ません。
これは、C# + Managedの限界なんでしょうか?
他のDirectXを使用したゲームだとウィンドウモードでも60fps出ます。
RADEON9500なのでスペックは足りてると思うのですが…。
0665デフォルトの名無しさんNGNG
>>664
んなことない。640x480x32bit のウィンドウモードで
ぷよぷよみたいなパズルゲームを作ったが
余裕で200fps以上出る。(GeForce2 GTS 64MB)

どこか設定がおかしいんじゃないかと思われ。
0666デフォルトの名無しさんNGNG
オラも、さくっとゲームつくれるようになりたいなぁ。
0667664NGNG
>>665
RADEONのドライバを最新版にしたらframeStats表示で1600弱出るようになりました。
DX9に完全対応していないバージョン入れてたのかもしれません。
DirectX診断ツールで「いくつかのファイルがデバッグ版」と表示されてたのが
原因かと思ったのですが、これはあんまり関係ないのかな。
0668デフォルトの名無しさんNGNG
>>667
DirectXで開発を行うにはリテール版ではなくデバッグ版のdllを使います。
0669667NGNG
>>668
じゃあこのままでいいんですね。
安心しました。
0670デフォルトの名無しさんNGNG
マウスを動かした方向に注視点を移動
矢印キー押した方向に視点と注視点を移動
を再現しようと思って視点と注視点を指すx軸とy軸の変数に
ボタンが押されたタイミングで足したり引いたりしても描いた通りには動かない。
なんでよ?
0671デフォルトの名無しさんNGNG
>>670
思い通りに行かないコードをどこかにうpしろ
0672デフォルトの名無しさんNGNG
視点の向きも考えずにそのままワールド座標で足してるんだろ。
0673デフォルトの名無しさんNGNG
スキンメッシュ難しいな。
>>528のサンプルソースだとtiny.xは大丈夫だけど、表示できないxファイルがあって困った。
なにが原因なのかさっぱりわからない・・。
0674デフォルトの名無しさんNGNG
Xファイルにはデータ構造の互換性しかないので、データ内容自体はまちまち
つまり出力ソフトごとに内容を解析して表示するしかない
座標系やサイズにも規定が無く、方向の扱いもバラバラ
0675デフォルトの名無しさんNGNG
>>674
TIFFとかRIFFみたいなもんか。
0676670NGNG
うpしたよ。
糞なソースですが我慢してください
http://cgi.members.interq.or.jp/hokkaido/asato/upload/jam3ddr/OB000700.zip
0677デフォルトの名無しさんNGNG
糞なソースと言う人は心の中ではうまく書けたと思っている
0678デフォルトの名無しさんNGNG
随分と長いWinMainだこと・・・
0679デフォルトの名無しさんNGNG
C#スレぢゃないのか
0680デフォルトの名無しさんNGNG
>>676
ソース長すぎ。
不具合が再現できる程度でなるべく短くすべき。
0681670NGNG
C+分かるのおらんのか
頼むよ誰か
0682デフォルトの名無しさんNGNG
404だたよ
0683デフォルトの名無しさんNGNG
C++は別スレ立ってる
0684673NGNG
>>674
そうなのか。
Xファイルの構造から勉強しないとだめそうだな。
LightWaveなら割とメジャーだし大丈夫かと思ってたんだが。
MSは早くC#のSkinnedMeshサンプルを用意してホスィ・・
0685デフォルトの名無しさんNGNG
C#の話題だけにならんのかなぁ。
スレが見づらくてかなわん。
0686デフォルトの名無しさんNGNG
>>685
確かに、C#で出来ませんですかって質問しても、
C#で用意されていないと満足できない香具師は逝ってよしって
怒られるもんなぁ。
0687デフォルトの名無しさんNGNG
>>686
C#で用意されているものを組み合わせて作ればいいだけなのに、
関数一発であらゆる機能が使えないと満足できない奴は逝って良しだろう
ちょっと前にそういう馬鹿が暴れていたが
0688デフォルトの名無しさんNGNG
沈没消滅しちゃったDirectX総合スレ、
だれか復活してくれないかな。
カキコが少なくとも、
ここはC#の話題で統一したいな。
0689デフォルトの名無しさんNGNG
>>688
関数一つであらゆる機能が使えるってのはどの処理系について言ってるの
0690デフォルトの名無しさんNGNG
>>689
?
0691デフォルトの名無しさんNGNG
>>689
どう考えても、釣りして楽しんでるよな。
誰かの反論を受けると、自分で考えろとか、自分で出来ない香具師は駄目だとか。
普段、専門学校で先生に言われてるんだろうか・・・
0692デフォルトの名無しさんNGNG
>>689=691
自分で出来ないのが駄目なのではなく、やろうとしないのが駄目
実際にやってみてその過程の質問ならまともに返事が返ってくるはず
0693デフォルトの名無しさんNGNG
>>688

立ってるよ。ム板に帰ってきた鬱だ氏のう DirectX

DirectX一般についてはこちらへ
http://pc2.2ch.net/test/read.cgi/tech/1054553472
0694デフォルトの名無しさんNGNG
あと、ゲーム製作技術板の避難板がそこそこ盛り上がってきているので
ゲーム製作に直接関連する事は、そっちへ行くと言うのも。

http://bbs.gamdev.org/gamedev/
0695デフォルトの名無しさんNGNG
んじゃ、ここは『C#によるDirectX』専用スレということで、以後よろしく!!
0696689NGNG
>>692
俺と691は別人だから
よく分からんが=で結ばないようにw
0697デフォルトの名無しさんNGNG
>>695
以後よろしく というよりか、もともと
DirectX C# vol.1
というタイトルなんだが・・・。
0698デフォルトの名無しさんNGNG
>>697
気づかない奴も居るがな
0699デフォルトの名無しさんNGNG
結局>>619はどうなったんかいな?
1週間以上経つしヒントも散々出たし、もう自力で解決してるか。
0700デフォルトの名無しさんNGNG
質問を出して回答をもらったなら結果報告を行う。
ネットニューズとかフォーラムでの基礎ですな。
結果報告といっても「できました、ありがとう」とかじゃ意味ないよ。
0701デフォルトの名無しさんNGNG
結果報告をまとめられるような人物なら、そもそもそんな質問の仕方はしないし、
他人に一方的に情報の提供を求めても、自分からは一切の情報を出さない
質問の段階ですらその内容に関する情報が不足しているんだから
0702619NGNG
なんだか,すごい事になってますな.
結果から言えば,何もやってません.申し訳ありません.

時間がかかりそうだったので,OpenGLのままやってます.
表示はメタボールなんですが,背後の物理計算のアルゴリズムの方が重いので,
多分,DirectXに乗り換えても劇的に変わる事は無いと思います.
ぶっちゃけ,DirectXに乗り換えたからといって論文が書けるわけではないし..

OpenGLでは画面枠と同じサイズのバッファを用意して,
それにコピーして,ヘッダをつけて,Bitmapでセーブしてるんですが,
C#のDirectXのどっかの大学の先生が書いた本を見たら簡単そうだったので,
聞いてみたのですが,そうでもなかったようですね.

気長に情報収集してみます.
0703デフォルトの名無しさんNGNG
どう読んだら簡単そうじゃないように見えたのか……。
0704デフォルトの名無しさんNGNG
>>703
?
0705デフォルトの名無しさんNGNG
遠近感なしの透視図法って、どうやってレンダリングすればいいんでしょう?
カメラのマトリックスの代わりに自分でマトリックス用意する?
0706デフォルトの名無しさんNGNG
射影変換のところを勉強してくれ
0707デフォルトの名無しさんNGNG
射影子の行列をかけるだけ。
0708デフォルトの名無しさんNGNG
表示されてるメッシュをクリックしたら、
そのメッシュを選択して、表示してる色を
変えるようなセレクト機能をつくりたいのですが
どこかにサンプルとかないでしょうか?
C++のサンプルには近いものがあったのですが、さっぱり
わからなくて、C#のサンプルには何故かありませんでした。
0709デフォルトの名無しさんNGNG
>>708
変換後のポリゴン面と、ビューの奥行きから割り出した直線との交点を求める
一つ一つだと時間がかかるので、メッシュごとに最大範囲を求めて
調べるポリゴンを限定できるようにしておくと良い
0710デフォルトの名無しさんNGNG
DirectX9 3Dゲームプログラミング vol.1
↑
これ以外にC#による解説書って発売されてます?
0711デフォルトの名無しさんNGNG
Win2000 SP3、パッチ全部最新で、
DirectX9SDK入れたら、
MPEG2のファイルをMediaPlayer9で再生した時に、前後で
KillTimer(hwnd,0xFFFFFFF)
At line 1380 of d:\builds\nt32_chk\multimedia\dshow\filters\image\video\direct.cpp
Continue?(Cancel to debug)
ってゆうエラーが出るんですが、同じ現象誰か体験してませんでしょうか?
現在.NET開発環境は入れてませんが、入れたあとに、これを入れて出たので、
OSから順番に入れ直し、パッチ全当てした後、このSDKを入れたら、めでたく出ました。


0712デフォルトの名無しさんNGNG
>>711
目的語の省略が多すぎて読解が不可能。
0713デフォルトの名無しさんNGNG
>>711
http://www.amazon.co.jp/exec/obidos/ASIN/4121006240/
0714デフォルトの名無しさんNGNG
パッチ全部最新パッチ全部最新パッチ全部最新パッチ全部最新パッチ全部最新パッチ全部最新パッチ全部最新
パッチ全部最新パッチ全部最新パッチ全部最新パッチ全部最新パッチ全部最新パッチ全部最新パッチ全部最新
パッチ全部最新パッチ全部最新パッチ全部最新パッチ全部最新パッチ全部最新パッチ全部最新パッチ全部最新
0715デフォルトの名無しさんNGNG
どんな質問が来ても、ウザイ奴が無意味な回答を2回づつするな。
同一人物だな。粘着質な奴に常駐されてるようだ。

>>712,>>713
>>706,>>707
>>699,>>700
>>620,>>621
0716デフォルトの名無しさんNGNG
○○というソフトで××というバグがでました。バージョンは最新版です。
0717708NGNG
>>709
一応C++のサンプルを見ながら次のようにしてみました
Vector3 vPickRayDir;
Vector3 vPickRayOrig;
Matrix matProj;
Surface surface = this.D3DParam.device.GetBackBuffer( 0,0,BackBufferType.Mono );
SurfaceDescription m_d3sdBackBuffer = surface.Description;
matProj = this.D3DParam.device.GetTransform(TransformType.Projection);
Point pt = new Point(e.X,e.Y);

// Compute the vector of the pick ray in screen space
Vector3 v;
v.X = ( ( ( 2.0f * e.X ) / m_d3sdBackBuffer.Width ) - 1 ) / matProj.M11;
v.Y = ( ( ( 2.0f * e.Y ) / m_d3sdBackBuffer.Height ) - 1 ) / matProj.M22;
v.Z = 1.0f;
Matrix m/*matView*/;
m = this.D3DParam.device.GetTransform(TransformType.View);
m.Invert();

// Transform the screen space pick ray into 3D space
vPickRayDir.X = v.X*m.M11 + v.Y*m.M21 + v.Z*m.M31;
vPickRayDir.Y = v.X*m.M12 + v.Y*m.M22 + v.Z*m.M32;
vPickRayDir.Z = v.X*m.M13 + v.Y*m.M23 + v.Z*m.M33;
vPickRayOrig.X = m.M41;
vPickRayOrig.Y = m.M42;
vPickRayOrig.Z = m.M43;

これでクリックしたときのRayが取得できたとは思うのですが、
どうやって交点を求めたらよいのでしょうか?
教えてクンですいません。
自分でも頑張って考えていくつもりではあるのですが..
0718デフォルトの名無しさんNGNG
>>715
だったらキミが率先して答えなさいよ。できるもんならな。
0719デフォルトの名無しさんNGNG
>>717
それC++版のサンプルをそのままコンバートしただけじゃん。
中身についてはちゃんと理解できてるのかい?

#ていうか、その後でD3DX使ってるからコンバートし切れなかったんだろう。
#コメントが英語だから容赦なく英語のページ紹介しそうになったぞ。

まあ、なんだ、あとはレイとポリゴンの交点の有無を求めるだけじゃろ。
ポリゴンと重なる平面との交点を求めて投影して内積で内外判定をすればいい。
詳しくは検索かけりゃすぐ出てくるだろうけど、吾輩がエスパーするに
キミはおそらく幾何学の基礎から学んだほうがよいのではないかな。

ゲームプログラミングのための3Dグラフィックス数学
http://www.amazon.co.jp/exec/obidos/ASIN/4939007375/

この本あたり、包括的で3D初学者向けだから1冊買っときなさい。
値段ぶんの値打ちはあるから。問題の件は5.2.1に載っている。
0720708NGNG
>>719
100%理解してるかといわれると、自信ないですが
クリックした座標を変換して、その座標からまっすぐ
伸びるrayと交差する面をとってくればよいという
大まかな流れだけはなんとか。

一応この後MeshクラスのIntersectあたりを使って
できないかどうかやってます。

>幾何学の基礎から学んだほうがよいのではないかな

全くそのとおりですね。
紹介していただいた本と共に色々自分でも調べてみます。

ありがとうございました。
0721デフォルトの名無しさんNGNG
どんな質問が来ても、ウザイ奴が無意味な回答を2回づつするな。
同一人物だな。粘着質な奴に常駐されてるようだ。

>>712,>>713
>>706,>>707
>>699,>>700
>>620,>>621
0722デフォルトの名無しさんNGNG
free(721);
0723デフォルトの名無しさんNGNG
C#すれなんで
721.Dispose();
0724デフォルトの名無しさんNGNG
どんな質問が来ても、ウザイ奴が無意味な回答を2回づつするな。
同一人物だな。粘着質な奴に常駐されてるようだ。

>>712,>>713
>>706,>>707
>>699,>>700
>>620,>>621
0725デフォルトの名無しさんNGNG
delete 724;
0726デフォルトの名無しさんNGNG
>>724
まだいたのかキミ。
0727デフォルトの名無しさんNGNG
どんな質問が来ても、ウザイ奴が無意味な回答を2回づつするな。
同一人物だな。粘着質な奴に常駐されてるようだ。

>>721,>>724
0728デフォルトの名無しさんNGNG
VS.NET2003にヘルプが統合できん
2002は出来たのに

手動でやるしかないのか...
0729デフォルトの名無しさんNGNG
>>728
2003用のセットアップがExtrasにあるよ
0730デフォルトの名無しさんNGNG
「ずつ。」だと思われ。

日本語も満足に書けない癖にプログラミングなんぞ出来るんかいな?
0731デフォルトの名無しさんNGNG
旧仮名遣いでは「づつ」です。
0732デフォルトの名無しさんNGNG
俺は頭痛
0733デフォルトの名無しさんNGNG
頭痛が痛い。
0734デフォルトの名無しさんNGNG
知人にC++&DirectX始めるよりC#&ManagedDirectXのが
わかりやすいと言われ、勉強してみようと思うんだけど
実際のところ、C++今から覚えるのよりいいのでしょうか?

あと、どんなことから始めたらいいかとか
アドバイスあったら聞きたいです。
0735デフォルトの名無しさんNGNG
>>734
わざわざ茨の道を進めんでも。
0736デフォルトの名無しさんNGNG
>>734
「僕には解りません」と友達に言うのが正解だと思うが。
そこまでしてパソコン博士の称号を死守したいのか?
0737734NGNG
>>735
そうなんですか…。

>>736
それだと進歩無いから自分でも作ってみようかと。

それにしても、即レス返ってきて驚き。
0738デフォルトの名無しさんNGNG
C++に慣れてるか、C#に慣れてるかの違いしかないなあ。
どっちにしろDirect3D自体のことは学習しないといけないわけだし。
0739デフォルトの名無しさんNGNG
>734
俺も、同じこと書こうと悩んでた。
C++だと資料とか情報が充実しているんだけど、
C#だと資料や情報がまだあまりないし。
かといって、C#での開発を諦めて
C++でやるものなんだかなあと・・・。
0740デフォルトの名無しさんNGNG
SDKのサンプルを実行すると、C++とC#で二倍近いFPSの差が出るよ
速度は気にしないというなら関係ないけど
0741デフォルトの名無しさんNGNG
>740
俺は同じくらいだけど?

C++と比べて、約90%のパフォーマンスという話は聞いてるけど。

0742デフォルトの名無しさんNGNG
両方(C++,C#)で開発できるのが、一番いいんだけど(汗)
0743デフォルトの名無しさんNGNG
バリバリの3Dゲームを作りたいから、
やっぱC++でやったほうがいいのかな・・・。
スマートにコーディングしたいけど。

連続カキコスマソ
0744デフォルトの名無しさんNGNG
BillBorad
C# 260-300
C++ 550-600
Lighting
C# 720
C++ 1026
VertexBlend
C# 875
C++ 905

サンプルによって幅は違うけど、圧倒的な差になっているものもある
差が出ないのはHAL側の処理に比重がいっているもの
0745デフォルトの名無しさんNGNG
描画がボトルネックになっていれば何やろうが大差ないはずだから、
CPU負荷がかかったときどうなるか知れたもんじゃねえ。

とC++使いの偏見。
0746デフォルトの名無しさんNGNG
今後のDirectXのバージョンで、
最適化されて、C#でのパフォーマンスが上がりました。
(C++で実行したパフォーマンスに近づく)

みたいな話は当然ないよね・・・。

0747デフォルトの名無しさんNGNG
>>746
Longhornでそうなるのではないかと。
0748デフォルトの名無しさんNGNG
>>747
関係ないかと。
0749デフォルトの名無しさんNGNG
BumpLensやったらC#がC++の2倍近いあたいを出した。
BillboardでC#のほうはウインドウをバックグラウンドにすると異様に重くなる。(300fps->9fps)
C++では変わらない。

C#のほうのつくりがかなりいけてないんでは…。
0750デフォルトの名無しさんNGNG
>BumpLensやったらC#がC++の2倍近いあたいを出した。
逆でしょ
0751デフォルトの名無しさんNGNG
>>749
> BillboardでC#のほうはウインドウをバックグラウンドにすると
> 異様に重くなる。(300fps->9fps)

マジレスするとだな、バックグラウンドにすると
1フレームごとに100msのスリープを取っているからなのさ。
■ このスレッドは過去ログ倉庫に格納されています