トップページ⇒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
0313デフォルトの名無しさんNGNG
>>312
グラフィックボードのことです
レスありでした〜
0314デフォルトの名無しさんNGNG
C++でDirectX5ぐらいだったら動くと思うよ。
0315デフォルトの名無しさんNGNG
>>311
>>79-97あたりを読むと幸せになれるかもね
0316デフォルトの名無しさんNGNG
何気にゴミHPのチュートリアル攻略終わってるんな
0317デフォルトの名無しさんNGNG
おいおい、リアルで中卒がプログラミングなんかしてるの?
中卒って将来ヤクザ、暴力団とかそんなレベルの奴だろ?
0318デフォルトの名無しさんNGNG
>>316
こういうページは飽きて更新しなくなっても消さないで置いておいてほしいもんだな。

0319デフォルトの名無しさんNGNG
>>317
それはお前の主観
0320デフォルトの名無しさんNGNG
>>317
ゲーム屋にはちらほら居るよ、
そういう連中は三流大卒よりゃハイレベルだったりする
0321デフォルトの名無しさんNGNG
一流大学でてようが、できないやつはできないし
あまり学歴は関係ないな。
0322デフォルトの名無しさんNGNG
ディスプレイって対外メーカーに関係なく接続できるもんなんですか?
どなたか教えてください・・・
0323デフォルトの名無しさんNGNG
またすれ違いな会話してるなおまいら
チュートリアルを扱ったHPは
途中で放置なとこが多いような気がしなくもない

>>318
どういう意味で消さないでほしいのか気になりますね

>>322
おまいはVB6でジャンケンゲーム作ることからはじめるとよいよ
あと312あたりも参考に汁
0324デフォルトの名無しさんNGNG
プログラム以前に、PC初心者板に移動することが先決だと思うが。
0325デフォルトの名無しさんNGNG
C#&DirectX9.0楽しいっす。
C++でやってたころよりゲーム本編の作成に集中できるというか。
0326デフォルトの名無しさんNGNG
Win32APIを呼び出すのに、定数の確認のためヘッダファイルを検索したりと面倒なので、
結局MC++と併用することに。
ツール部分を作るのは楽になったが、ゲーム本体は余計に面倒になった。
0327デフォルトの名無しさんNGNG
なぜC++と併用なのかと
面倒ならC++だけで作れよ・・
それともう来なくていいからね
0328デフォルトの名無しさんNGNG
ゲームを作るのに、関連ツールを作る必要があるから。
ウインドウフレームワークが必要な部分に関してはC#側で作った方が圧倒的に楽。
DirectXを利用するという点に関してはC++の方が組みやすいが、
実際のゲーム作成は本体だけ作れば良いわけではない。
本体はC++の方が楽だが、そうなるとツール側と本体の関連プログラムを二重に作らなければならなくなる。
つまり両方の利点を生かす上で、MC++との併用が一番楽だったという話。
作成方法は個人によって異なるとは思うが、何故頭ごなしに併用を否定するのだろう。
0329デフォルトの名無しさんNGNG
スレ違いだからじゃないん?ちと微妙だけど。
0330デフォルトの名無しさんNGNG
>>328
>>326
後だしじゃんけんかよ。
0331デフォルトの名無しさんNGNG
>>326
から
>>328
を想像することを期待するのですか
0332デフォルトの名無しさんNGNG
よい子のみんな〜
無限ループの予感がするから
C++の話はここで終了ね
おねーさんとの約束よ?

>>328はC++やC#じゃなくて空気の読みかた勉強したほうがよいよ
0333デフォルトの名無しさんNGNG
ピノキオ
0334デフォルトの名無しさんNGNG
C#にあるメソッドでC++ない奴ってあるのね(´・ω・`)
0335デフォルトの名無しさんNGNG
MCとC#はDOS時代で言うところの、アセンブラとCに似てますね。
低レベル部分をアセンブラで作って、Cで利用するのはよくやりました。
0336デフォルトの名無しさんNGNG
>>334
C++にはないのにC#にはあるメソッドは悲惨でつねほんと
ヘルプがダメポすぎなのにC++のほうは参照できないといふ・・

>>335
他のピノキオが脊髄反応するのような
スレ違いな話題振るのやめましょうね
0337デフォルトの名無しさんNGNG
MCのラッピングとC#からの利用は、すれ違いではないと思うのですが。
使いやすいラッパーを作っていければ、開発が楽になります。
C用のライブラリはたくさんあるのに、
C#は今のところ、そういったものを公開している人がいないところが泣き所です。
0338デフォルトの名無しさんNGNG
C++で出来る人は、ここでも言われているとおり、C++だけで作ってるから、
わざわざ.NET用のラッパーを作る奇特な神はいないのだろう
0339デフォルトの名無しさんNGNG
たとえそういった物があったとしてもここでそんな話をすれば
スレ違いだということで荒れる原因になるという。
全てがC#でなければスレ違いというローカルルールがいつ出来たのかは知らないけど。
0340デフォルトの名無しさんNGNG
C#でDirectXを扱いたいだけなのに、やれC++では簡単だとか、
やれC++のヘルプを見れだとか言うレスが付くからなんじゃね?

まぁ、あれだ。C#でDirectXを扱うのが困難な状況を改善しない
MSが諸悪の根源なんじゃねーかなぁと。
0341デフォルトの名無しさんNGNG
>>337
.NET FrameworkにDirectXを叩くクラスが無いのが問題だと思う。
別にラッパー作りたい訳じゃないから。
0342デフォルトの名無しさんNGNG
規格的に配列などのメモリーの扱いが違うから、
直接叩くようにするのは無理っぽい。
いっそC#にもアンマネージの直接アクセス出来る機能を付けるとか。
どうせDirectXを使った時点で移植なんか無理なんだし。
0343デフォルトの名無しさんNGNG
なんでManaged微妙にちがってんの?DirectXの内容自体は同じでないの?
0344デフォルトの名無しさんNGNG
全てがそのまま移植できるわけではないから。
保護された安全な場所から、外の戦場を制圧する武器を作っているような状態で、
出来る限り現地で行動するのと似せて作ってあるけど、やっぱり限界がある。
0345デフォルトの名無しさんNGNG
>>342
それやるとC#の意味ねぇと思うがどうか。

元々C#もDirectXも出所は同じなんだから、いっその事
過去の互換性を捨ててでもDirectXのマネージコード化
を進めそうな希ガス。

DirectX10の話を聞かなくなったから、今度はマネージ
コードだと言われても驚かないな俺は。
0346デフォルトの名無しさんNGNG
10まで2年待たなければならないけど、そこまで気長に待つのもどうかと。
0347デフォルトの名無しさんNGNG
XBOX2では、DirectXに代わる開発フレームワークを用意するって
話をどっかのサイトで読んだんだが、これがDirectX10の代わりに
来るんじゃないのかね?
0348デフォルトの名無しさんNGNG
コンシューマーをマネージ対応コードで作るとは思えないが。
0349デフォルトの名無しさんNGNG
XNAのことか?
あれはむしろ、Windows、WindowsMobile、XBox用のソフトがクロス開発できる
プラットフォームかなと見たが。
0350デフォルトの名無しさんNGNG
>>349
それだ。

.NET FrameworkがWindowsとWindowsMobileのソフトウェア開発の
ハードルを下げたように、今度はDirectXのマネージ化がくるんじゃ
ねーかなと。
0351デフォルトの名無しさんNGNG
>>350
マネージ化してるってば。
0352デフォルトの名無しさんNGNG
していなかったら、そもそもこのスレが存在していない可能性が高い。
0353デフォルトの名無しさんNGNG
p://www.watch.impress.co.jp/game/docs/20040706/xna.htm
これを見た感じ、XNAはマネージ以上にハードル低いように読める。
0354デフォルトの名無しさんNGNG
誰でも簡単にというだけで、具体的にどれだけ簡単なのかまるで説明されていない。
描画や演算ライブラリが一通りそろっていても、それをイメージ通りに動かす上で、
そのイメージをどうやって伝えるのか、それが誰でも出来るほどに簡単にするすべは何なのかがさっぱり。
HTML作成ツールを例に挙げているが、あれだって配色や素材の問題もあるし、
ツールを使ったからと言ってセンスのいいデザインになるとは限らない。
また多機能にしようと思えば、ツールで補える範疇を超える。
小規模で定型に絞り、限られた範囲という条件で簡単だというのなら、
今までと大して変わるところはない。
0355デフォルトの名無しさんNGNG
物理エンジンや3DエンジンのAPIをMSが用意してそれの交換を楽にしてやるよって話じゃねーの
レゴブロックみたいに上手くいくかは知らんけど物理エンジン、3Dエンジン、シェーダーは挿げ替えできたほうがいい
0356デフォルトの名無しさんNGNG
>>353
ここで言ってる理想通りになったらそれこそスバラシイだろうけど
もし仮に実現したとしてもDirectXをコネコネしながら
ゲーム作ったって経験は生きそうな予感
出るの待ってる暇があったら必死こいてコード書いてたほうがよさげ
0357デフォルトの名無しさんNGNG
>>356
DirectXをコネコネしながらゲーム作ったって経験は活きるよ。

だけど、多くのゲーム作りたい人はゲームを作りたい訳であって、
DirectXをコネコネしたい訳じゃないよな。仕方なくコネコネ
しているだけでさ。

そう言う意味では、本来のゲーム作り以外の部分のハードルが
低くなる事には意味がある。

無論、現状では実現されてない訳だから、それを待ち侘びるだけ
ではなく、現状でやれる事をやってくってのは大事だと思うけど。
0358デフォルトの名無しさんNGNG
とりあえず、SDKドキュメントのチュートリアルはなぞってみた。
D3Dを使っての2D表示(要はビルボード)をいろいろいじってみたいんだが、
sampleディレクトリにある奴はどれも高度っぽくて参った。
将来的には簡単なシューティングゲームみたいな物を作ってみたいんだけど、
こんな文献が参考になるよーっていうのがあったら教えていただきたい。

…ってスレ違いですか?(´・ω・`)
0359デフォルトの名無しさんNGNG
最近そのままシューティングゲームを作る本が出たな。
ttp://www.amazon.co.jp/exec/obidos/ASIN/4797327316/
0360デフォルトの名無しさんNGNG
>>359
やっぱりというかなんというか
C#本じゃないのが残念
立ち読みしてきまふ
0361デフォルトの名無しさんNGNG
>>359
アルゴリズム本であってシューティングを絡めた言語入門書じゃないぞ
0362358NGNG
>>359
その本買ったんだけど、ガチガチのアルゴリズム本でした。
いや、承知して買ったんですが。
面白かったんですが、入門書にはならず。
C++のソースついてるけど、規模が大きいから
ソースなぞりながら理解していく、ってのが難しそうなのであきらめました('A`)
0363デフォルトの名無しさんNGNG
ネット対応3Dシューティング(FPSなど)のアルゴリズム本でないかな。
0364デフォルトの名無しさんNGNG
コンパクトなシューティングのソースならゲ製作技術板にイパーイある
C++とDelphiばっかりだけど
0365デフォルトの名無しさんNGNG
ColorKey.ColorSpaceHighValu ってARGB値ですか?
透過しなくて困っています。
0366デフォルトの名無しさんNGNG
久々の質問だ
気合入れて答えろよおまいら

俺?

すまん、わからん
0367デフォルトの名無しさんNGNG
>>365
ソースのサーフェスのピクセルフォーマットの通りに指定する。
んでもいまどき使う、それ?
0368365NGNG
>367
え、いまどきは何を使うのでしょうか。
0369365NGNG
いろいろ調べて試してみましたが、
367の発言だけで巧くいくほど理解していないようです。
ソースのサーフェスのピクセルフォーマットは
どこで設定しているのでしょうか。

現在のソースは以下のようになっています。

SurfaceDescription description = new SurfaceDescription(); //
description.Clear(); // Clear out the SurfaceDescription structure.
Surface bmpSurf = new Surface("filename" description, draw); // .
ColorKey ck = new ColorKey(); // Create a new colorkey.
ck.ColorSpaceHighValue = ck.ColorSpaceLowValue = Color.Green.ToArgb(); //左上をcolorkey
bmpSurf.SetColorKey(ColorKeyFlags.SourceDraw, ck); //
0370デフォルトの名無しさんNGNG
う〜ん……

> ck.ColorSpaceHighValue = ck.ColorSpaceLowValue = Color.Green.ToArgb(); //左上をcolorkey

Color.Green.ToArgb()で取るより、直接サーフェイスから取った方が良くない?
せっかく、「左上をcolorkey」という仕様になっているんだから。
あと、サーフェイスってビデオカードの状態によって誤差が出そうな気がする。

DirectDrawが廃止される以前にC++でいじってた頃の記憶なので、はずしてたらスマソ。
0371365NGNG
コメントは抜き忘れです。
本当はbmpに読み込んでbmp.GetPixel(0,0).ToArgb()をやってました。
でもこれもだめらしい。
サーフェイスから直接、ってどうやってとるんですか?

0372デフォルトの名無しさんNGNG
>>371
Surface を Lock して、左上と思しきアドレスから、1ピクセル分と思しき
サイズ (2バイト〜4バイト) だけデータを読んで、RGB部分を取り出して使う。

たぶんこんな感じ。
byte [] pixels = bmpSurf.Lock();
switch (description.PixelFormat.RgbBitCount + description.PixelFormat.AlphaBitDepth ) // RGB と仮定
{
 case 15: val = pixels[1]*256 + pixels[0]; break;
 case 16: val = pixels[1]*256 + pixels[0]; break;
 case 24: val = (pixels[2] * 256 + pixels[1]) *256 + pixels[0]; break;
 case 32: val = ((pixels[3] * 256) + pixels[2] * 256 + pixels[1]) *256 + pixels[0]; break;
}
val = val & (description.PixelFormat.RBitMask | description.PixelFormat.GBitMask | description.PixelFormat.BBitMask);

>え、いまどきは何を使うのでしょうか
Direct3D を使ったほうが情報も多いしラクだと思います。
しょぼいビデオカードでも VSync に厳密にあわせられてテアリングしないのは良いけど > 昔のDDraw
0373デフォルトの名無しさんNGNG
>>372
あ、これが済んで pexels が無用になっらた Unlock を忘れずに。
0374365NGNG
ありがとうございました。

確かにDIrect3dのほうが情報が多いんですよね。
少し3Dもやってみます。

本もどかどか買ったことだし……。
0375デフォルトの名無しさんNGNG
 最近、DirectXを始めたので、周りに聞く人もいないので、質問させてください。
おばかな質問かとバカにされるかもしれませんが・・・。本当に分からないので。
Direct3DとDirectDrawを同時に使うということはできるものなのでしょうか?
 Direct3Dでオブジェクトを表示させている画面の上に、スプライトでテクスチャを貼るということは可能でしょうか?
 本とかサイトを見る限り、板ポリゴンの上にテキスチャを張っているサンプルが多いのですが・・・。
 参考になるページとかありましたら、お教えください。よろしくお願いします。
0376デフォルトの名無しさんNGNG
>>375
>Direct3DとDirectDrawを同時に使うということはできるものなのでしょうか?
不可能
>Direct3Dでオブジェクトを表示させている画面の上に、スプライトでテクスチャを貼るということは可能でしょうか?
一部意味不明な部分があるがポリゴンとスプライトの混在は可能
>参考になるページ
Cマガでたまに組む特集ぐらいしか取っ掛かりがないよね
0377デフォルトの名無しさんNGNG
そもそもスプライトなどという機能は存在しないので、無い物は混在できない。
0378デフォルトの名無しさんNGNG
>>375
変換済み頂点を使った板ポリゴンで十分だから、いまさら DirectDraw の
スプライトを使う人はほとんどいないと思います。

お金儲けをしようと思って、自販機のお釣り帰ってくるところを探し回る人と
同じくらいのレア度だと思いますよ。
0379デフォルトの名無しさんNGNG
C#からDirectDrawは使えないだろ?
0380デフォルトの名無しさんNGNG
C#からDirectShowは使えますか?
0381デフォルトの名無しさんNGNG
>>379
何の問題もなく使えるが、お前は何を言っているんだ?
0382デフォルトの名無しさんNGNG
DirectX7のころはDirectDrawサーフェイスに描画した画像を
テクスチャに指定することができたみたいですが
DirectX9になってからはできなくなったというのはホントでつか?
仮にホントだとして同じような機能を実現するにはどーしたらよいのでしょうか?
0383デフォルトの名無しさんNGNG
うそです。
0384デフォルトの名無しさんNGNG
無くなった機能をどうしても使いたいのなら、古いバージョンで開発する。
その為の互換性でもあるんだけどな……。
0385デフォルトの名無しさんNGNG
>>382
テクスチャに描画すればいいじゃん。
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#を使って開発してもメリットないだろうな。
■ このスレッドは過去ログ倉庫に格納されています