トップページ⇒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
0386デフォルトの名無しさんNGNG
>>385
その方法がわからないのかと思われ
0387382NGNG
>>385
殺り方とかのってるHPはないんでしょうか?
0388デフォルトの名無しさんNGNG
>>387
殺り方藁田
0389デフォルトの名無しさんNGNG
ageてみますね・・・
0390デフォルトの名無しさんNGNG
>>387
GetDC して GDI で書いてもいいし、LockRect してバッファに直接書いてもいいし。
DirectDraw の頃とたいして変わってないと思うけど・・・
0391デフォルトの名無しさんNGNG
>>387
これは?
http://www.microsoft.com/japan/msdn/directx/japan/dx9/mxd10.asp
0392387NGNG
>>391
アンタ、スゲーいい香具師だな
メガトン級サンクスコ
0393デフォルトの名無しさんNGNG
質問です。
うまく伝えられるかどうか分かりませんが・・・。

 Direct3Dのシーン上で二つのカメラを扱うことは
できますか?一つのオブジェクトを異なる複数の視
点から表示したいと思っています。
 よくゲームとかで、画面の隅っこの方にキャラク
タを上から見たようなの(地図みたいなの?)が表
示されるのってありますよね?そういうのを作りた
いと思うのですが、どうしていいのか、さっぱり、
分かりません。何かアドバイス等いただけたらと思
います。宜しくお願いします。
0394デフォルトの名無しさんNGNG
ビューの設定を変えて表示したい数だけレンダリングすればいい。
0395デフォルトの名無しさんNGNG
>>393
266をまとめた116の「ウインドウの一部に表示したい」
って奴を応用してカメラの位置かえて再描画
0396駄目PGNGNG
すみません。
C#ビルダー使いはじめたのですが、そもそも言語仕様を詳しく解説したサイト
ありませんか?とくにCとの比較 違い
Cでこうしたい時は、c#ではこう書く みたいな...

いきなり構造体の中に配列作ろうとしてエラー
#define <(これは無いらしいのはわかった、正確にはあるけと用途が違う)

useing ...

const int MAXVIEWPORT =8; <ここでは宣言できないらしい

amespace hoge
{
 const int MAXVIEWPORT =8; <ここでも宣言できないらしい
 #define MAXVIEWPORT =8;<これも駄目らしい #defineはこういう使い方ではない
struct dRECT{
 int T,L,W,H;
}
struct SaveFORMAT {
 int ClientSizeX,ClientSizeY;
 dRECT RECTS[MAXVIEWPORT];<こんな使い方したいけど全文がエラーだから駄目
 dRECT RECTS[7];<こういう書き方もだめ orz...
};
public class WinForm : System.Windows.Forms.Form
{
}
グローバルな定数をどうやって宣言するのだろう。
ある程度C++も理解しているが、かえってその違いにクラクラしてますorz.. 
0397デフォルトの名無しさんNGNG
C♯相談室 Part16
http://pc5.2ch.net/test/read.cgi/tech/1087297504/
0398デフォルトの名無しさんNGNG
>>396
.NET SDK付属MSDNライブラリ(無料)
0399デフォルトの名無しさんNGNG
C++移転組ならこれ便利
ttp://black.sakura.ne.jp/~third/programming/cs/cs.html
0400デフォルトの名無しさんNGNG
.NET板
http://bbs.2ch2.net/dotnet/
0401駄目PGNGNG
>>387 399
有難う。これから調べます!
0402デフォルトの名無しさんNGNG
誰でも簡単にって・・・w
万能な開発ツール作ってコードの自動出力付ければいいだけだと思うがねw

XNAには期待してないからDirectX10だせや
また一から覚えなおすのはやだから
0403デフォルトの名無しさんNGNG
そろそろ俺の出番かな?
0404デフォルトの名無しさんNGNG
関係無いが、池袋に「俺の出番」というラーメン屋がある。
0405デフォルトの名無しさんNGNG
ダレでも簡単 ってヤツに限って 誰でも簡単にいじれない代物なんだよね・・(にや
0406デフォルトの名無しさんNGNG
関係ないが、小便少女もいる。
0407デフォルトの名無しさんNGNG
申し訳ありません。質問です。
自分で作ったフォントをインストールさせずにDirectFontで使用する事はできますか?
0408デフォルトの名無しさんNGNG
申し訳ありません。質問です。
印刷業界を崩すために98年MicroSoftが放つとどめの一撃。
AdobeのAcrobat実用段階システムにしてMSでDirectFontと呼ばれていたプロジェクトって何ですか?
0409駄目PGNGNG
いろいろ調べたけど明確な答えが見つからないなぁorz..

構造体の中に配列すら単純に記章できないのでしょうかorz..
サンプル見てもc#の得意な事ばかり強調されているけど、C++からの移植について
ベーシックな部分を説明しているところがない...

構造体にコンストラクタって(もちろん便利ではあるのだけど)
構造体のポインタをファイル関数に渡して、メモリイメージを保存したい。
そんな場合には、無用な機能だし

誰か明快なお答えをorz..

#define wm_mycommand = 1111;

Cでかかれているこんな定義は何処ですればいいのだろう。
0410デフォルトの名無しさんNGNG
>>409
こちらで聞いてみれば?
ttp://pc5.2ch.net/test/read.cgi/tech/1062421817/l50
0411デフォルトの名無しさんNGNG
こっちのがHOTかも
ttp://pc5.2ch.net/test/read.cgi/tech/1087297504/l50
0412デフォルトの名無しさんNGNG
C++頭でC#を使って開発してもメリットないだろうな。
0413デフォルトの名無しさんNGNG
そもそもCでも#defineは別の物に置き換えるのが推奨されているし、
その書き方はC#側と同じになる訳なんだが。

つまりC#以前にCが理解できていないということなのだから、
まともに移植など出来ようはずがない。
0414デフォルトの名無しさんNGNG
public const = wm_mycommand = 1111;
0415414NGNG
まちがいた
public const int wm_mycommand = 1111;
0416デフォルトの名無しさんNGNG
DEFINT A-Z
0417デフォルトの名無しさんNGNG
工学社から出てるこれらの本は参考になるのかな?

http://www.kohgakusha.co.jp/books/detail/4-87593-419-X
http://www.kohgakusha.co.jp/books/detail/4-87593-437-8
http://www.kohgakusha.co.jp/books/detail/4-7775-1043-3
0418デフォルトの名無しさんNGNG
>>417
バカには参考になるんじゃないの
0419デフォルトの名無しさんNGNG
>>418
それが理解できないお前は何者なんだろうな。
0420デフォルトの名無しさんNGNG
なんだろ、この思考力の欠片も感じられない最低品質の煽りはw
0421デフォルトの名無しさんNGNG
お前もな。
0422駄目PGNGNG
>>415
すみません
ネームスペースの外に宣言できますか?
でなければクラスの外に宣言できますか?

クラス内でしか宣言できないとなると 
クラスで使用したい構造体の為の宣言が出来ないのですがorz...


0423デフォルトの名無しさんNGNG
>>422
あのさ(←書き方が乱暴で悪いけど)、世の中には C# で必要な struct を定義して
Win32 API を読んだり、あるいは単に C# で struct を使ったりしてる例が山ほどあるでそ。

喪前のやろうとしていることは、どれほど「特別な」ことなんだ?
誰でも当たり前のように出来るのに、422には出来ない、という場合には、
「できますか?」って質問するんじゃなくて、何をやろうとしているのかを具体的に書いて、
「やり方を教えてください」って頼んだ方が良いと思う。
0424デフォルトの名無しさんNGNG
>>423
「できますか?」って質問に対しては、
単純に
「できます」
「できません」
って答えてあげればいい
0425デフォルトの名無しさんNGNG
ばーか
0426潜伏していた1NGNG
>>422
こうするんです
public class ConstValueList
{
 public const int a ;
}
class Hoge2
{
 void func() { System.Console.WriteLine( "{0}" , ConstValueList.a ) ; }
}
C++と違いconst はクラスのメンバであってインスタンスのメンバーではありません。
文法こそC++と似ていますが、中身は似ても似つきません。
なので、グダグタ言わず色々試してみるべし。

もう一つ、構造体の中身を書き出すのは、ISerializable を使うのがC#流のようです。
あんまり良く分かっていないのですが、こうする事でファイルを仲介してprivateメンバへの
アクセスを防止してセキュアなアプリを構築しやすくなっているようです。
また簡単にXMLとして保存もできるようになります。
ちなみに、直接バイナリで保存できる方法があったら、誰か教えてください、僕も知りたいです。
0427デフォルトの名無しさんNGNG
>>417
初めてDirecTXにふれるなら参考になるはず。
俺はその系統のDirectX8のヤツ買ったけどかなり役に立ったよ。
0428デフォルトの名無しさんNGNG
DirecTV
0429デフォルトの名無しさんNGNG
まずは、オブジェクト脳を作るんだ。
0430デフォルトの名無しさんNGNG
そもそも、>>422は
なぜわざわざC#でやりたいんだろうか・・・。
C++で無難にやったほうが
情報量も多いし、パフォーマンスもいいのに。
0431デフォルトの名無しさんNGNG
>430
開発時間が圧倒的に短いから。

> 情報量も多いし、パフォーマンスもいいのに。

Managedによるパフォーマンスの低下は約一割。
ケース倍ケースだが、C#を選ぶ理由は充分にある。
0432デフォルトの名無しさんNGNG
生産性がいいわりには苦労してるようだが……。
0433デフォルトの名無しさんNGNG
>>431
SDKのサンプルを見る限りは、軒並み一割どころではない差が付いているが、
何をもって一割なんだか意味不明。
0434デフォルトの名無しさんNGNG
>>431
C++からの移行だとそうでもないよ、もともとDirectXはC++を想定して作られているので
C#のクラスとして考えるとやり方のキテレツな方法が仕様中に詰まってます。
メモリーの構造がイメージできないと理解に苦しむような仕様があります。
パフォーマンスもかなりトリッキーな事をしないと一割は難しい。
誇大広告は鵜呑みにするべからず。

それでもGDI+よりかなり面白い事ができるので、気に入ってはいますけど・・・
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#という選択に問題がある。
■ このスレッドは過去ログ倉庫に格納されています