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
0340デフォルトの名無しさん
NGNGやれC++のヘルプを見れだとか言うレスが付くからなんじゃね?
まぁ、あれだ。C#でDirectXを扱うのが困難な状況を改善しない
MSが諸悪の根源なんじゃねーかなぁと。
0341デフォルトの名無しさん
NGNG.NET FrameworkにDirectXを叩くクラスが無いのが問題だと思う。
別にラッパー作りたい訳じゃないから。
0342デフォルトの名無しさん
NGNG直接叩くようにするのは無理っぽい。
いっそC#にもアンマネージの直接アクセス出来る機能を付けるとか。
どうせDirectXを使った時点で移植なんか無理なんだし。
0343デフォルトの名無しさん
NGNG0344デフォルトの名無しさん
NGNG保護された安全な場所から、外の戦場を制圧する武器を作っているような状態で、
出来る限り現地で行動するのと似せて作ってあるけど、やっぱり限界がある。
0345デフォルトの名無しさん
NGNGそれやるとC#の意味ねぇと思うがどうか。
元々C#もDirectXも出所は同じなんだから、いっその事
過去の互換性を捨ててでもDirectXのマネージコード化
を進めそうな希ガス。
DirectX10の話を聞かなくなったから、今度はマネージ
コードだと言われても驚かないな俺は。
0346デフォルトの名無しさん
NGNG0347デフォルトの名無しさん
NGNG話をどっかのサイトで読んだんだが、これがDirectX10の代わりに
来るんじゃないのかね?
0348デフォルトの名無しさん
NGNG0349デフォルトの名無しさん
NGNGあれはむしろ、Windows、WindowsMobile、XBox用のソフトがクロス開発できる
プラットフォームかなと見たが。
0350デフォルトの名無しさん
NGNGそれだ。
.NET FrameworkがWindowsとWindowsMobileのソフトウェア開発の
ハードルを下げたように、今度はDirectXのマネージ化がくるんじゃ
ねーかなと。
0351デフォルトの名無しさん
NGNGマネージ化してるってば。
0352デフォルトの名無しさん
NGNG0353デフォルトの名無しさん
NGNGこれを見た感じ、XNAはマネージ以上にハードル低いように読める。
0354デフォルトの名無しさん
NGNG描画や演算ライブラリが一通りそろっていても、それをイメージ通りに動かす上で、
そのイメージをどうやって伝えるのか、それが誰でも出来るほどに簡単にするすべは何なのかがさっぱり。
HTML作成ツールを例に挙げているが、あれだって配色や素材の問題もあるし、
ツールを使ったからと言ってセンスのいいデザインになるとは限らない。
また多機能にしようと思えば、ツールで補える範疇を超える。
小規模で定型に絞り、限られた範囲という条件で簡単だというのなら、
今までと大して変わるところはない。
0355デフォルトの名無しさん
NGNGレゴブロックみたいに上手くいくかは知らんけど物理エンジン、3Dエンジン、シェーダーは挿げ替えできたほうがいい
0356デフォルトの名無しさん
NGNGここで言ってる理想通りになったらそれこそスバラシイだろうけど
もし仮に実現したとしてもDirectXをコネコネしながら
ゲーム作ったって経験は生きそうな予感
出るの待ってる暇があったら必死こいてコード書いてたほうがよさげ
0357デフォルトの名無しさん
NGNGDirectXをコネコネしながらゲーム作ったって経験は活きるよ。
だけど、多くのゲーム作りたい人はゲームを作りたい訳であって、
DirectXをコネコネしたい訳じゃないよな。仕方なくコネコネ
しているだけでさ。
そう言う意味では、本来のゲーム作り以外の部分のハードルが
低くなる事には意味がある。
無論、現状では実現されてない訳だから、それを待ち侘びるだけ
ではなく、現状でやれる事をやってくってのは大事だと思うけど。
0358デフォルトの名無しさん
NGNGD3Dを使っての2D表示(要はビルボード)をいろいろいじってみたいんだが、
sampleディレクトリにある奴はどれも高度っぽくて参った。
将来的には簡単なシューティングゲームみたいな物を作ってみたいんだけど、
こんな文献が参考になるよーっていうのがあったら教えていただきたい。
…ってスレ違いですか?(´・ω・`)
0359デフォルトの名無しさん
NGNGttp://www.amazon.co.jp/exec/obidos/ASIN/4797327316/
0360デフォルトの名無しさん
NGNGやっぱりというかなんというか
C#本じゃないのが残念
立ち読みしてきまふ
0361デフォルトの名無しさん
NGNGアルゴリズム本であってシューティングを絡めた言語入門書じゃないぞ
0362358
NGNGその本買ったんだけど、ガチガチのアルゴリズム本でした。
いや、承知して買ったんですが。
面白かったんですが、入門書にはならず。
C++のソースついてるけど、規模が大きいから
ソースなぞりながら理解していく、ってのが難しそうなのであきらめました('A`)
0363デフォルトの名無しさん
NGNG0364デフォルトの名無しさん
NGNGC++とDelphiばっかりだけど
0365デフォルトの名無しさん
NGNG透過しなくて困っています。
0366デフォルトの名無しさん
NGNG気合入れて答えろよおまいら
俺?
すまん、わからん
0367デフォルトの名無しさん
NGNGソースのサーフェスのピクセルフォーマットの通りに指定する。
んでもいまどき使う、それ?
0368365
NGNGえ、いまどきは何を使うのでしょうか。
0369365
NGNG367の発言だけで巧くいくほど理解していないようです。
ソースのサーフェスのピクセルフォーマットは
どこで設定しているのでしょうか。
現在のソースは以下のようになっています。
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++でいじってた頃の記憶なので、はずしてたらスマソ。
0371365
NGNG本当はbmpに読み込んでbmp.GetPixel(0,0).ToArgb()をやってました。
でもこれもだめらしい。
サーフェイスから直接、ってどうやってとるんですか?
0372デフォルトの名無しさん
NGNGSurface を 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あ、これが済んで pexels が無用になっらた Unlock を忘れずに。
0374365
NGNG確かにDIrect3dのほうが情報が多いんですよね。
少し3Dもやってみます。
本もどかどか買ったことだし……。
0375デフォルトの名無しさん
NGNGおばかな質問かとバカにされるかもしれませんが・・・。本当に分からないので。
Direct3DとDirectDrawを同時に使うということはできるものなのでしょうか?
Direct3Dでオブジェクトを表示させている画面の上に、スプライトでテクスチャを貼るということは可能でしょうか?
本とかサイトを見る限り、板ポリゴンの上にテキスチャを張っているサンプルが多いのですが・・・。
参考になるページとかありましたら、お教えください。よろしくお願いします。
0376デフォルトの名無しさん
NGNG>Direct3DとDirectDrawを同時に使うということはできるものなのでしょうか?
不可能
>Direct3Dでオブジェクトを表示させている画面の上に、スプライトでテクスチャを貼るということは可能でしょうか?
一部意味不明な部分があるがポリゴンとスプライトの混在は可能
>参考になるページ
Cマガでたまに組む特集ぐらいしか取っ掛かりがないよね
0377デフォルトの名無しさん
NGNG0378デフォルトの名無しさん
NGNG変換済み頂点を使った板ポリゴンで十分だから、いまさら DirectDraw の
スプライトを使う人はほとんどいないと思います。
お金儲けをしようと思って、自販機のお釣り帰ってくるところを探し回る人と
同じくらいのレア度だと思いますよ。
0379デフォルトの名無しさん
NGNG0380デフォルトの名無しさん
NGNG0381デフォルトの名無しさん
NGNG何の問題もなく使えるが、お前は何を言っているんだ?
0382デフォルトの名無しさん
NGNGテクスチャに指定することができたみたいですが
DirectX9になってからはできなくなったというのはホントでつか?
仮にホントだとして同じような機能を実現するにはどーしたらよいのでしょうか?
0383デフォルトの名無しさん
NGNG0384デフォルトの名無しさん
NGNGその為の互換性でもあるんだけどな……。
0385デフォルトの名無しさん
NGNGテクスチャに描画すればいいじゃん。
0386デフォルトの名無しさん
NGNGその方法がわからないのかと思われ
0388デフォルトの名無しさん
NGNG殺り方藁田
0389デフォルトの名無しさん
NGNG0390デフォルトの名無しさん
NGNGGetDC して GDI で書いてもいいし、LockRect してバッファに直接書いてもいいし。
DirectDraw の頃とたいして変わってないと思うけど・・・
0391デフォルトの名無しさん
NGNGこれは?
http://www.microsoft.com/japan/msdn/directx/japan/dx9/mxd10.asp
0393デフォルトの名無しさん
NGNGうまく伝えられるかどうか分かりませんが・・・。
Direct3Dのシーン上で二つのカメラを扱うことは
できますか?一つのオブジェクトを異なる複数の視
点から表示したいと思っています。
よくゲームとかで、画面の隅っこの方にキャラク
タを上から見たようなの(地図みたいなの?)が表
示されるのってありますよね?そういうのを作りた
いと思うのですが、どうしていいのか、さっぱり、
分かりません。何かアドバイス等いただけたらと思
います。宜しくお願いします。
0394デフォルトの名無しさん
NGNG0395デフォルトの名無しさん
NGNG266をまとめた116の「ウインドウの一部に表示したい」
って奴を応用してカメラの位置かえて再描画
0396駄目PG
NGNGC#ビルダー使いはじめたのですが、そもそも言語仕様を詳しく解説したサイト
ありませんか?とくに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デフォルトの名無しさん
NGNGhttp://pc5.2ch.net/test/read.cgi/tech/1087297504/
0398デフォルトの名無しさん
NGNG.NET SDK付属MSDNライブラリ(無料)
0399デフォルトの名無しさん
NGNGttp://black.sakura.ne.jp/~third/programming/cs/cs.html
0400デフォルトの名無しさん
NGNGhttp://bbs.2ch2.net/dotnet/
0401駄目PG
NGNG有難う。これから調べます!
0402デフォルトの名無しさん
NGNG万能な開発ツール作ってコードの自動出力付ければいいだけだと思うがねw
XNAには期待してないからDirectX10だせや
また一から覚えなおすのはやだから
0403デフォルトの名無しさん
NGNG0404デフォルトの名無しさん
NGNG0405デフォルトの名無しさん
NGNG0406デフォルトの名無しさん
NGNG0407デフォルトの名無しさん
NGNG自分で作ったフォントをインストールさせずにDirectFontで使用する事はできますか?
0408デフォルトの名無しさん
NGNG印刷業界を崩すために98年MicroSoftが放つとどめの一撃。
AdobeのAcrobat実用段階システムにしてMSでDirectFontと呼ばれていたプロジェクトって何ですか?
0409駄目PG
NGNG構造体の中に配列すら単純に記章できないのでしょうかorz..
サンプル見てもc#の得意な事ばかり強調されているけど、C++からの移植について
ベーシックな部分を説明しているところがない...
構造体にコンストラクタって(もちろん便利ではあるのだけど)
構造体のポインタをファイル関数に渡して、メモリイメージを保存したい。
そんな場合には、無用な機能だし
誰か明快なお答えをorz..
#define wm_mycommand = 1111;
Cでかかれているこんな定義は何処ですればいいのだろう。
0410デフォルトの名無しさん
NGNGこちらで聞いてみれば?
ttp://pc5.2ch.net/test/read.cgi/tech/1062421817/l50
0411デフォルトの名無しさん
NGNGttp://pc5.2ch.net/test/read.cgi/tech/1087297504/l50
0412デフォルトの名無しさん
NGNG0413デフォルトの名無しさん
NGNGその書き方はC#側と同じになる訳なんだが。
つまりC#以前にCが理解できていないということなのだから、
まともに移植など出来ようはずがない。
0414デフォルトの名無しさん
NGNG0415414
NGNGpublic const int wm_mycommand = 1111;
0416デフォルトの名無しさん
NGNG0417デフォルトの名無しさん
NGNGhttp://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バカには参考になるんじゃないの
0419デフォルトの名無しさん
NGNGそれが理解できないお前は何者なんだろうな。
0420デフォルトの名無しさん
NGNG0421デフォルトの名無しさん
NGNG0422駄目PG
NGNGすみません
ネームスペースの外に宣言できますか?
でなければクラスの外に宣言できますか?
クラス内でしか宣言できないとなると
クラスで使用したい構造体の為の宣言が出来ないのですがorz...
0423デフォルトの名無しさん
NGNGあのさ(←書き方が乱暴で悪いけど)、世の中には C# で必要な struct を定義して
Win32 API を読んだり、あるいは単に C# で struct を使ったりしてる例が山ほどあるでそ。
喪前のやろうとしていることは、どれほど「特別な」ことなんだ?
誰でも当たり前のように出来るのに、422には出来ない、という場合には、
「できますか?」って質問するんじゃなくて、何をやろうとしているのかを具体的に書いて、
「やり方を教えてください」って頼んだ方が良いと思う。
0424デフォルトの名無しさん
NGNG「できますか?」って質問に対しては、
単純に
「できます」
「できません」
って答えてあげればいい
0425デフォルトの名無しさん
NGNG0426潜伏していた1
NGNGこうするんです
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初めてDirecTXにふれるなら参考になるはず。
俺はその系統のDirectX8のヤツ買ったけどかなり役に立ったよ。
0428デフォルトの名無しさん
NGNG0429デフォルトの名無しさん
NGNG0430デフォルトの名無しさん
NGNGなぜわざわざC#でやりたいんだろうか・・・。
C++で無難にやったほうが
情報量も多いし、パフォーマンスもいいのに。
0431デフォルトの名無しさん
NGNG開発時間が圧倒的に短いから。
> 情報量も多いし、パフォーマンスもいいのに。
Managedによるパフォーマンスの低下は約一割。
ケース倍ケースだが、C#を選ぶ理由は充分にある。
0432デフォルトの名無しさん
NGNG0433デフォルトの名無しさん
NGNGSDKのサンプルを見る限りは、軒並み一割どころではない差が付いているが、
何をもって一割なんだか意味不明。
0434デフォルトの名無しさん
NGNGC++からの移行だとそうでもないよ、もともとDirectXはC++を想定して作られているので
C#のクラスとして考えるとやり方のキテレツな方法が仕様中に詰まってます。
メモリーの構造がイメージできないと理解に苦しむような仕様があります。
パフォーマンスもかなりトリッキーな事をしないと一割は難しい。
誇大広告は鵜呑みにするべからず。
それでもGDI+よりかなり面白い事ができるので、気に入ってはいますけど・・・
0435anonymous
NGNG使用するポート、プロトコルについて
調べるソフトウエア または、方法はないでしょうか?
0436デフォルトの名無しさん
NGNGEthereal
0437デフォルトの名無しさん
NGNGメモリ管理がらくでわかりにくいバグがでないからだと
>434
CustomVertexのこと?
もっとましなインターフェイスにしてほしいよ。
0438デフォルトの名無しさん
NGNGcsc /lib:"e:\windows\microsoft.net\managed directx\v9.00.1126"
/r:Microsoft.DirectX.dll *.cs
とかやってもだめです。
0439デフォルトの名無しさん
NGNGそもそも言語側でメモリ管理をしなきゃならんってのが今となっては前時代的だしなぁ。
0440デフォルトの名無しさん
NGNGそれじゃC#はもろに前時代的な言語だな。
■ このスレッドは過去ログ倉庫に格納されています