トップページ⇒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
0435anonymousNGNG
あるWindowsアプリケーションが、一連の動作の中で
使用するポート、プロトコルについて
調べるソフトウエア または、方法はないでしょうか?
0436デフォルトの名無しさんNGNG
>>435
Ethereal
0437デフォルトの名無しさんNGNG
>430
メモリ管理がらくでわかりにくいバグがでないからだと

>434
CustomVertexのこと?
もっとましなインターフェイスにしてほしいよ。
0438デフォルトの名無しさんNGNG
コマンドラインからビルドするにはどうすればいい?

csc /lib:"e:\windows\microsoft.net\managed directx\v9.00.1126"
/r:Microsoft.DirectX.dll *.cs

とかやってもだめです。
0439デフォルトの名無しさんNGNG
>>437
そもそも言語側でメモリ管理をしなきゃならんってのが今となっては前時代的だしなぁ。
0440デフォルトの名無しさんNGNG
言語側でメモリーを管理するのが前時代的なのか。
それじゃC#はもろに前時代的な言語だな。
0441デフォルトの名無しさんNGNG
>>439-440
煽りは死滅スレでやってね、くだらない質問で埋め尽くされるのは、このスレの意義があったと言えるが
キチガイ発言で埋め尽くされるのはゴメンだよ。
0442デフォルトの名無しさんNGNG
>>440
そりゃあーたC/C++じゃねーのか?

>>441
スマソ、でもこれだけは言って置きたかった。
0443デフォルトの名無しさんNGNG
C/c++は言語側が管理するのではなく、プログラマ側が管理するんだが。
0444デフォルトの名無しさんNGNG
2004 summer入れたらビルド通らなくなってた。
微妙に変わっているのね。
0445デフォルトの名無しさんNGNG
C/C++だと、ハードをプログラマが管理するんですね











とてもとても前時代的ですね。
0446デフォルトの名無しさんNGNG
>>443 >>443 >>445
よそへ逝け
0447デフォルトの名無しさんNGNG
最近のドライバは大概C/C++で組まれているが。
どんな最先端OSを使っているのか興味津々。
0448デフォルトの名無しさんNGNG
リソースの管理はロックしないように気を付けたり、
勝手に開放されないように明示的設定をする必要があったりと、
気を抜ける場所ではありません。
0449デフォルトの名無しさんNGNG
でもま、メモリをプログラマが一々管理するってのはアホらしいとは思うね。

機械的な作業まで人間様が面倒見なならんってのはなぁ。
0450デフォルトの名無しさんNGNG
>>449
氏ねキチガイ
0451デフォルトの名無しさんNGNG
VS.NET2002だとDirectXSDK入れただけでウィザード出来るんじゃないんですか?
0452デフォルトの名無しさんNGNG
夏版なら2004でもウイザート動くよ
0453デフォルトの名無しさんNGNG
無料でアップグレードできるのに、未だに2002を使っている理由が分からない。
アカデミックならゴミみたいな値段で買えるし。
0454デフォルトの名無しさんNGNG
2004からウィザードは無くなったよ
0455デフォルトの名無しさんNGNG
>>453
そーゆーのは余計なお世話ってやつじゃない
0456デフォルトの名無しさんNGNG
2004ってなに?
0457デフォルトの名無しさんNGNG
2004Summerを入れたんですがDirectXプロジェクトのウィザードが出来ないんです
MSのフォーラムによれば2002ならウィザードが出来るはずなんですが。
0458デフォルトの名無しさんNGNG
2003ですね(藁
0459デフォルトの名無しさんNGNG
Visual Studioのバージョンと、DirectX SDKのバージョンが
激しく混乱している予感
0460デフォルトの名無しさんNGNG
>>450
機械的な作業でお金貰ってたら人間として恥ずかしいだろ。
0461デフォルトの名無しさんNGNG
アホは無視の方針で頼む >ALL
0462デフォルトの名無しさんNGNG
未だに2002を使っている奴って、非合法的手段で入手した臭いがするんだが。
0463デフォルトの名無しさんNGNG
そうだな。下らないので>>461は無視する。まだ>>460の方が的を射ている。

>>457
>>459のとおり、ちゃんと双方のバージョン見直した方がいいと思う。
0464デフォルトの名無しさんNGNG
>>438
俺はこんな感じでやってる。こんなんでいいのかは知らんが。
sc /nologo /target:winexe /out:xxx.exe /optimize /win32icon:icon\xxx.ico /lib:C:\WINNT\assembly\GAC
/r:Microsoft.DirectX\1.0.900.0__31bf3856ad364e35\Microsoft.DirectX.dll;Microsoft.DirectX.Direct3D\1.0.900.0__31bf3856ad364e35\Microsoft.DirectX.Direct3D.dll;
Microsoft.DirectX.Direct3DX\1.0.900.0__31bf3856ad364e35\Microsoft.DirectX.Direct3DX.dll;Microsoft.DirectX.DirectInput\1.0.900.0__31bf3856ad364e35\Microsoft.DirectX.DirectInput.dll source\*.cs
0465デフォルトの名無しさんNGNG
やべー、いくつか改行入れたのにまだ長すぎた(汗)
みなさんすいません。
0466デフォルトの名無しさんNGNG
しかもコンパイラ名の c が抜けて sc になってるよ。
今日はもうだめぽ。
0467デフォルトの名無しさんNGNG
ていうか長ぁ
0468デフォルトの名無しさんNGNG
>>464-467
モチュチケ
0469デフォルトの名無しさんNGNG
>>467
ごめんね。
0470デフォルトの名無しさんNGNG
↓

こんな感じのテクスチャを用意しておいて、
スプライト描画するときに回転させて描画(←とか↑とか)させたいんですが
どうやったらできるでしょうか?
Sprite.Draw2D()に回転角を引数に取るものがあったのですが、
説明が少なくてよくわかりませんでした。
(全体が回転する?)
0471438NGNG
>>464
できたYO。
0472デフォルトの名無しさんNGNG
>>457

俺も2004summerを入れたけど、ウィザードできなかった。
VisualStudioのバージョンは2003。
theSpokeのやつ。

VisualStudio2003じゃウィザードでないですか?!

激しい既出の質問ですが、答えらしい答えは無かったような気がします。
どなたか分かる方いたら、教えてください!
おねがいしゃす!おねがいしゃす!
0473デフォルトの名無しさんNGNG
Summer2004ではウィザードは廃止された。
代わりにGUIも使える新しいフレームワークのサンプルが、
EmptyProjectとしてサンプルブラウザからインストール出来る。

これFAQになりそうだ。
0474472NGNG
>>473 は 唯一神です。

ありがたき幸せ。生きていて本当に良かった。ありがとう。ありがとう。
0475デフォルトの名無しさんNGNG
>>473
つーコトは、VC#以外の開発環境(ボーランドの奴とか#D)でもサクッと作れるように
なったのか。ヒャッホウ!
0476デフォルトの名無しさんNGNG
てか、機能ダウンだろ。
0477デフォルトの名無しさんNGNG
根本的にウィザードなど使用する必要性がないのでどうでもいい。
0478デフォルトの名無しさんNGNG
日経ソフトウェアで連載始まったらしいけど
他にも連載してるとこある?
Cマガで2回ほど特集してるのは持ってるんだけど
0479デフォルトの名無しさんNGNG
>>478
アバンジェリスト川西さん期待age。

Cマガでやってた特集はどれも糞。
連載は他にはやってないんじゃないかなあ。
0480デフォルトの名無しさんNGNG
VS.NET 2003でManagedDXウィザードを使うには。

1. Summer2004にウィザードは含まれないため、まずDX9SDK Summer2003を入れておく。

2. DX9SDK Summer2004を入れる。

3. ウィザードのテンプレートファイルを修正する。
 具体的には [VS.NET2003をインストールしたディレクトリ]\VC#\VC#Wizards\Mdx9AppWizard\Templates\1033\
 例えば C:\Program Files\Microsoft Visual Studio .NET 2003\VC#\VC#Wizards\Mdx9AppWizard\Templates\1033\

3.1 ファイル:D3DBlank.cs
 219行:
  Color.White.ToArgb()
  -> Color.White

3.2 ファイル:D3DApp.cs
 61行:
  RenderStates
  ->RenderStateManager
 62行:
  SamplerStates
  -> SamplerStateManagerCollection
 63行:
  TextureStates
  -> TextureStateManagerCollection

つづく。
0481デフォルトの名無しさんNGNG
つづき。

3.3 ファイル:D3DFont
 40行:
  TextureState
  -> TextureStateManager
 41行:
  TextureState
  -> TextureStateManager
 42行:
  Sampler
  -> SamplerStateManager
 43行:
  RenderStates
  -> RenderStateManager

3.4 ファイル:D3DUtil.cs
 925行:
  RenderStates
  -> RenderStateManager

3.5 ファイル:D3DEnumeration.cs
 379行:
  ref qualityLevels
  -> out qualityLevels

4. ウィザードからプロジェクト作成して、DirectX系の参照が
 バージョン1.0.2902.0(Summer2004)になっていることを確認しつつコンパイル。

5. 嘘ついてたらごめんょ。
0482デフォルトの名無しさんNGNG
ウィンドウのクライアント領域と同じ大きさのバックバッファサーフェスを作ったんですけど、
ウィンドウのサイズが変更されたときに、サーフェスのサイズを変更するにはどうしたらいいんでしょうか?
プロパティやメソッドの一覧を見ても、サイズを変更する方法が見つかりません・・・
0483デフォルトの名無しさんNGNG
protected override void OnLayout(LayoutEventArgs e)
{
  image.Dispose();
  image = new Bitmap(ClientSize.Width, ClientSize.Height);
}
0484デフォルトの名無しさんNGNG
新しく作り直すしかないんすか・・・ (´・ω・`)
なんかオーバーヘッドがでかそう。
0485デフォルトの名無しさんNGNG
オーバヘッドを気にするのなら、そもそもC#という選択に問題がある。
0486デフォルトの名無しさんNGNG
>>485
C++ だとどうやるんですか。参考までに。
0487デフォルトの名無しさんNGNG
>>485
Java だとどうやるんですか。参考までに。
0488デフォルトの名無しさんNGNG
あるけど

backSurface.SurfaceDescription.Width
backSurface.SurfaceDescription.Height
0489デフォルトの名無しさんNGNG
>>486
そもそも、フレームバッファをウィンドウフレームのサイズに拡大縮小してBlitしているだけで(CViewが勝手にやってくれるんだと思う)、
クライアントエリアの大きさが変更されても、実際にフレームバッファ(フロント・バック・Z・ステンシル等)のサイズが変更されるわけじゃないよ。
だから、320x240のフレームバッファを1024x768のウィンドウフレームに表示してくれるしその逆もある。
0490デフォルトの名無しさんNGNG
拡大縮小を行うか否かは出力時に決定するものだが、
なぜ突然行うことが前提で話し出す馬鹿が出現するんだろう?
0491デフォルトの名無しさんNGNG
>>489
>だから、320x240のフレームバッファを1024x768のウィンドウフレームに表示してくれるしその逆もある。
主観だけど、そんなゲームやりたくないし、作りたくないよ。っていうか、482で明確に

>ウィンドウのクライアント領域と同じ大きさのバックバッファサーフェスを作ったんですけど、
って書いてるから、今話してるプログラムはそういうタイプのものでは無いと思う。
0492デフォルトの名無しさんNGNG
>>491
おまえこそなんか勘違いしている。
0493デフォルトの名無しさんNGNG
理由も無しに決めつけるのはよくないですね
0494デフォルトの名無しさんNGNG
>>492
どう勘違いしてるの?参考までに。
0495デフォルトの名無しさんNGNG
>>494
何がわからないの。参考までニヒヒ。
0496デフォルトの名無しさんNGNG
なんか10秒に一回くらい、0.5秒くらい固まるんだけど、コレって何?
0497デフォルトの名無しさんNGNG
ガベコレががんばっているんじゃないの?
0498デフォルトの名無しさんNGNG
Dispose を忘れてますた OTL
0499デフォルトの名無しさんNGNG
directinputでマウスの動きを検出しようとしてるんだが、
何故かdeviceのSetEventNotificationで設定したイベントが
飛んでこない。
サンプルと同じようにやってるのに何故だorz
0500デフォルトの名無しさんNGNG
中濃ソース晒さんとアドバイスもできん
サンプルが普通に動いてるなら
おまいのコードが悪いってことに
0501デフォルトの名無しさんNGNG
焼そばソースなら晒せます。
0502デフォルトの名無しさんNGNG
おじさんつまんなーい
0503デフォルトの名無しさんNGNG
> 本来、アニメーションセットの取得には GetAnimationSet メソッドを使うべきですが、
> DirectX 9.0 Update (Summer 2003) では、GetTrackAnimationSet メソッドがその機能を持っています。
> 逆に言うと、このリリースの GetTrackAnimationSet は正しく実装されていません。
> これは修正される予定なので、このコードは将来のバージョンでは正しく動作しません。
> GetAnimationSet メソッドを使ったコードをコメントアウトしていますので、正しく修正されたリリースではそちらを使ってください。


2004夏ではこのバグ(?)は修正されていますでしょうか。
落とされた方教えて下さい。
0504デフォルトの名無しさんNGNG
C#で高速化目指すなら静的なプログラミングじゃないと難しいなぁ。
大量のnew→disposeの繰り返しは厳しすぎる。
まぁゲームは基本的にスタンドアロンだから開始前に大量にメモリ確保しても問題ないか。
いちいち事あるごとにnewなんてしてられないしね。
0505デフォルトの名無しさんNGNG
ここは駄目初心者の日記帳じゃないんだが。
0506デフォルトの名無しさんNGNG
ここは書き込みの内容が支離滅裂で意味不明で標語的な言葉を暗記するだけで判断を外部に任せてしまう駄目初心者の日記帳じゃないんだが。
0507デフォルトの名無しさんNGNG
ManagedDirectXを解説したオススメの書籍とかないでしょうか?
0508デフォルトの名無しさんNGNG
>>507
某MVP大学生も押しているが、イチオシといえばこれしかない。

Managed Directx 9: Kick Start : Graphics and Game Programming
ttp://www.amazon.co.jp/exec/obidos/ASIN/0672325969

なんてたってMDXのAPI設計者自らが書いている点で信頼性大。
ソースコードが歯切れ良く鏤められている点も分かりやすくてよい。
0509デフォルトの名無しさんNGNG
押すじゃなく推すじゃないのか
0510デフォルトの名無しさんNGNG
>508の本は俺も持っている。
突然自分の頭が良くなったんじゃないか?ってぐらいわかりやすい。
超オススメ。
0511デフォルトの名無しさんNGNG
>>508
カケラも日本語でのなさそうな ふいんき(なぜかry)なんだが・・
英語オンリーじゃ教養のない漏れにはつらすぎる
0512デフォルトの名無しさんNGNG
>>511
いや、本当にわかりやすいんだよ。
とにかく英語が平易でわかりやすい。
辞書なしで読み進めることができたんで
自分でもビックリした。
0513デフォルトの名無しさんNGNG
技術英語なら何とかなる.がんがれ
0514デフォルトの名無しさんNGNG
ならないよ

才能のある人間達の会話はこれだから嫌なんだ
0515デフォルトの名無しさんNGNG
才能じゃなくて努力だろ。
がんばれ。
0516511NGNG
どちらにせよ英語確定なわけか・・
立ち読みしてみて判断したいとこだが
洋書じゃそういうワケにもいかんよなぁ・・
0517デフォルトの名無しさんNGNG
MSDN(英語)で挫折した偏差値50の俺でも大丈夫でしょうか?
0518デフォルトの名無しさんNGNG
偏差値50なら学校で英語の授業ないだろ
0519デフォルトの名無しさんNGNG
あったわい
0520デフォルトの名無しさんNGNG
>517
なら無理。
でも努力すれば可
0521デフォルトの名無しさんNGNG
サンプルコードとかって載ってますか?
0522508NGNG
>>521
前の書き込みで書いたが、
コードだけでも読み進められるくらい、
めちゃくちゃいっぱい載ってる。

あと紀伊国屋新宿南店で存在確認。
0523デフォルトの名無しさんNGNG
すまん質問さしてくれ
マネージドの解説本らしいがVBとC#どっち使ってる?
この本にはどんなサンプルがのってるん?
Direct3Dオンリー?
サンプルやチュートリアルで網羅しきれてないサンプルとかある?
ぶっちゃけこれ一冊で簡単な3Dゲが作れるくらいのボリュームですか?

新宿遠すぎ
騙されたともって買ってみるカ・・
0524デフォルトの名無しさんNGNG
騙されないから買っておけ。
0525デフォルトの名無しさんNGNG
> マネージドの解説本らしいがVBとC#どっち使ってる?
C#

> この本にはどんなサンプルがのってるん?
いろいろ
おまけCDはMSI

> Direct3Dオンリー?
いいえ

> サンプルやチュートリアルで網羅しきれてないサンプルとかある?
いいえ(はい)

> ぶっちゃけこれ一冊で簡単な3Dゲが作れるくらいのボリュームですか?
はい(いいえ)

> 新宿遠すぎ
いいえ
0526デフォルトの名無しさんNGNG
> サンプルやチュートリアルで網羅しきれてないサンプルとかある?
いいえ(はい) ←どっちでつか

> ぶっちゃけこれ一冊で簡単な3Dゲが作れるくらいのボリュームですか?
はい(いいえ) ←どっちでつか

アマゾンで注文しまつた
0527デフォルトの名無しさんNGNG
>>526
>>508にまんまと嵌められたな。
糞して後悔するがいい。
0528デフォルトの名無しさんNGNG
Mesh.LoadHierarchyFromFile
でアニメーションが入ってないファイルを読み込むと、

中身が腐ったAnimationRootFrame.AnimationContollerが返ってくる。

外からじゃ腐ってるか判別できないから、
覗こうとして適当なプロパティをを参照した瞬間あぼーんもうだめぽ
0529デフォルトの名無しさんNGNG
何回やってもデバイスの初期化であぼんぬなんですがやっぱノーパソごときでMDX使うのが間違ってますかね?
0530デフォルトの名無しさんNGNG
>>508は、例のマネージド本の出版社の社員です。
>>526は彼の営業活動に騙された、立派な被害者です。
0531デフォルトの名無しさんNGNG
ノーパソもここ2年ぐらいは3D強化されてるから動くと思うけど
どんな化石を使ってるのかね
0532526NGNG
>>530
訴えていいでつか?
0533デフォルトの名無しさんNGNG
>>525補足
おまけCDにはVB.NETのソースもはいってたはず
0534デフォルトの名無しさんNGNG
この本、付属のCDにC#とVBのコードが入ってる。
しかし、すでに1年前の本なんで、サンプルコードがちょっと古くなってるね。
summer2003で書かれているので、summer2004で書いてるヒトは
そのままではコンパイルは通らないハズ。
たとえば、一番最初のプログラム例で、CustomVertex.TransformedColoredの
頂点配列を使うんだけど、

vertices[0].SetPosition(new Vector4(Width / 2.0f, 50.0f, 0.5f, 1.0f));

と、summer2003での書き方になってる。summer2004では、

vertices[0].Position = new Vector4(Width / 2.0f, 50.0f, 0.5f, 1.0f);

このようにメソッドがプロパティに変更されてる。
まぁ、こーゆー所を直しながらコードを打ち込んでいくのも勉強になるんで頑張れ。
0535デフォルトの名無しさんNGNG
いろんなところに、「SHOP TALK」ってあるんですけど、
これってなんですか?

前後の文脈から、点睛慎吾みたいなものかなあと想像するのですが
■ このスレッドは過去ログ倉庫に格納されています