トップページ⇒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
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」ってあるんですけど、
これってなんですか?

前後の文脈から、点睛慎吾みたいなものかなあと想像するのですが
0536デフォルトの名無しさんNGNG
"Shop Talk"
うんちく話。相手、時、場所を選ばず、自分の商売の話ばかりすること。専門話。
0537デフォルトの名無しさんNGNG
要するに、トリビアか。
0538デフォルトの名無しさんNGNG
英英辞書
ttp://www.webster-dictionary.org/d.aspx?w=shop%20talk

Yahoo! 辞書
ttp://dic.yahoo.co.jp/bin/dsearch?t=o&d=all&p=shop+talk

専門語辞典
ttp://wwwd.nova.co.jp/webdic/webdicc.cgi?imode=yes&dic=ALL&lang=X&word=shoptalk

terminology とか jargon の会話版、みたいな感じか。
0539デフォルトの名無しさんNGNG
藻前らいっしょにShop TALKしようぜ。
0540デフォルトの名無しさんNGNG
summer2003と2004ぜんぜん入れてませんでつた
アップテートとかぬかしてるのに上位互換なんいんですねこいつら
サンプル動かなくて激しく鬱でつ
0541デフォルトの名無しさんNGNG
ちょっと分からないので質問します。
DirectXのMeshクラスでティーポットとかトーラスを作成できますよね。
そのティーポットの頂点データなどを取得する方法はありますか?
どうすればよいでしょうか?宜しくお願いします。
0542デフォルトの名無しさんNGNG
マルチか?コピペか?厨房王国BBXが今夜も嵐を呼ぶ!!
0543デフォルトの名無しさんNGNG
>>541
Mesh.Teapot(device).Device.RenderState.Lighting = true;

これで落ちるらしいぞ。
0544デフォルトの名無しさんNGNG
>>541
あ〜。うろ覚えなんで、自分で確かめてほしいんだけど。
BaseMeshにVertexBufferやIndexBufferをゲットするためのプロパティがなかったかな?
メッシュ、プログレメッシュ、パッチメッシュなどは、このクラスからの継承。

public class Mesh : BaseMesh { ... }
0545デフォルトの名無しさんNGNG
>541.544
Mesh box = Mesh.Box(device,1.0f,1.0f);
VertexBuffer vb = box.VertexBuffer;

ここから、どうやってvbに格納されている頂点データを取得したらいいのでしょうか?
0546デフォルトの名無しさんNGNG
>>545
お前はなぜ自分で調べようとしないんだ?
サンプルならWebにごろごろ転がってるぞ。
0547よしおNGNG
Direct3Dで動いてる画面のスクリーンショットを取るプログラムを作り
たいのですがどのAPI?クラスを使えばいいのでしょうか?
スクリーンショットを取ってメモリやbitmapで保存できるような物が作
りたいのですが
0548デフォルトの名無しさんNGNG
>>545
手順を書いとく。
たしか、DXの付属サンプルに、その目的そのまんまのコードが
あったような気がする。イルカのやつ。

�@メッシュからVertexBufferとその数を取得。
�A新しいVertexBufferを確保。
�BメッシュからゲットしたVertexBufferをロック。ストリームまたは配列をゲット。
�C新しいVertexBufferへメッシュのVertexBufferをコピーする。
�DメッシュからゲットしたVertexBufferをアンロック。
0549デフォルトの名無しさんNGNG
>548
そうだ、忘れてた。w
書き込むバッファもロック、アンロックしろよ。
0550デフォルトの名無しさんNGNG
DirectSoundではMP3を再生することはできなんでしょうか?
0551デフォルトの名無しさんNGNG
デコードしながらバッファに書き込んでいけば問題なく出来るだろ。
0552デフォルトの名無しさんNGNG
>>550
素直にVideo使えって。
0553デフォルトの名無しさんNGNG
>>551
そんな上等なことできたら初心者板に居る必要ないね

>>552
DirectShowの機能だっけVideoって
0554デフォルトの名無しさんNGNG
Windows Mediaな。
0555541NGNG
>546.548
どうもありがとうございました。
できました。めちゃくちゃ考え違いしていたみたいで・・・。お恥ずかしい。
大変お手数をおかけしました。ありがとうございました。
0556デフォルトの名無しさんNGNG
Audio audio = new Audio("smp.mp3", true);
audio.Play();

Video video = new Video("smp.mpg", true);
video.Play();
0557デフォルトの名無しさんNGNG
>>556
神キタ〜〜〜〜〜〜〜〜〜!!
胡散臭いとか言う次元すら超越してアッサリ実装できますた 多謝。

なんかDirectSoundみたいに
自動でループとかいうステキなメソッド・プロパティないんすね
ここ参照にしてみますた これまたアッサリ実装できますた
http://fe0r.at.infoseek.co.jp/Doc/midi.htm
0558デフォルトの名無しさんNGNG
どこが神なんだ・・・
サンプルからそのままやんか
0559デフォルトの名無しさんNGNG
551や558に比べたら超神杉だろ
文句だけは達者なヤツはウザイだけ
他池
0560デフォルトの名無しさんNGNG
結局、条件のDirectSoundでというのは何だったんだ?
再生できるなら何でもいいのなら、そんな条件を付けなければいいのに、
何のためにDirectSoundを指定したんだ?
0561デフォルトの名無しさんNGNG
音鳴らすってことを全部DirectSoundでできたら楽なのにとか思ったんだろ?
それ以外はダメなんて一切書いてないしAudioあたりで満足したみだいだし放置しとけ
0562デフォルトの名無しさんNGNG
>>561
匂いを出すってことは全部DirectSmellでできることを知らない罠。
0563デフォルトの名無しさんNGNG
>>562
神きたーーーーーーーー!!!!!!!!
DirectSmell使ってみたけどホントに臭い出たよ!!
ようやくレモンの香りのするシューティングが完成しそう
アリガトン!!!

















って時代がいつか来るのかな・・?
臭い出た時点で少なくともクリスクロスは超越するわけだが
0564デフォルトの名無しさんNGNG
現代でいうブラクラのニオイ版とかあったら、マジで洒落にならないよな。
悪質なニオイに出くわしたら、ほんとに吐いて具合悪くするんじゃない?
0565デフォルトの名無しさんNGNG
そうなると、きっと匂いファイヤーウォールとか出るに違いない。
フィルタリングする項目にウンコ、カメムシ、生ごみとかリストアップしてあったりして。
0566デフォルトの名無しさんNGNG
あ
0567デフォルトの名無しさんNGNG
 匂いファイアウォール・・・。嫌ですね。特にカメムシは・・・。
質問です。C#でForceFeedbackについて簡単に解説&サンプルが載ってるページってご存知でしょうか?
 あと「それぐらい調べてください」といわれそうですが、質問ついでに質問します。ごめんなさい。
DirectPlayは使ったことがないので良く分かりませんが、
 一つの空間に複数の人がアクセスしてくるようなプログラムを作成したい場合、
DirectPlayの関数で、簡単に空間を共有してくるような機能ってありますか?やっぱり、
DirectPlayは単なる通信の方法でしかなくて、オブジェクトの共有とかデータで送ってあげないとムリですか?
やっぱ、そこまではできませんよね?
0568デフォルトの名無しさんNGNG
>匂いファイヤーウォール
匂いデバイスを意図的に誤動作させるパケットを切れば・・
それ以前に匂いを発生させるデバイスがない限り無問題っぽいが
そんな装置作ったら特許モンだよな

> 一つの空間に複数の人がアクセスしてくるようなプログラムを作成したい場合、
クライアント/サーバー トポロジのことを言ってんのか
ピアツーピア トポロジのことを言ってんのか
どっちなのかはっきりしてほしいぞ ヘルプに絵つきで糞わかりやすい解説がついてるからまずそれを見てくれ
たぶんクライアント/サーバー トポロジのほうを想定してるんじゃないと思うが

>DirectPlayの関数で、簡単に空間を共有してくるような機能ってありますか?
>DirectPlayは単なる通信の方法でしかなくて、オブジェクトの共有とかデータで送ってあげないとムリですか?
たとえばおまいさんの想像してるのは
キャラクタ1〜10までの座標とHPを共有 とか設定すれば勝手にデータ転送して整合性保ってくれる
みたいなのか? だとしたら無理 そんな都合のいい機能はないかと思われ 自分で実装しる
DirectPlayはパケット(文字列やら数値やら音声やら)を転送するための手段を提供してくれるだけと考えておいたほうがよいよ
0569デフォルトの名無しさんNGNG
>>563
そのくらいヘルプ嫁、と言いたいところだが、ヒントだけな。
味はとりあえず俺の好みに合わせているが、各人好きなように調整してくれ。

DirectSmell.Device dev = new DirectSmell.Device(form1);
DirectSmell.Buffer coffee = DirectSmell.Presets.Coffee.Wonda.MorningShot(CoffeeStrength.Strong, CoffeeSugar.Double, dev);
coffee.Play();
0570デフォルトの名無しさんNGNG
>>569
匂いだけでなく味まで再現するのか・・
どんなハードウェアか想像もつかん













みんなが飽きる前にそのネタやめとけ?
0571デフォルトの名無しさんNGNG
もうとっくに飽きてるんですが何か。
0572デフォルトの名無しさんNGNG
たぶん、色表現をRGBの値で表現するように、
色々においを表現できるんだろうな。
ウイルスの付録になりそう。
0573デフォルトの名無しさんNGNG
>>569
砂糖入れすぎ
0574デフォルトの名無しさんNGNG
おまいら、たまにはニュースみろよ
臭いのでるデバイスはネットカフェで遊べるよ
東京だけど
0575567NGNG

>DirectPlayはパケット(文字列やら数値やら音声やら)を転送するための手段を提供してくれるだけと考えておいたほうがよいよ

 やっぱりそうですよね。もしかしたらそういう「便利な機能もあったりして?」と思っただけです。
お手数をおかけしました。
0576デフォルトの名無しさんNGNG
DirectDrawを使って2D画像を拡大縮小させたりしたいのですが、2D画像のサイズは
2の倍数しか扱えないのですか?
0577576NGNG
それと、C#のGDI+系の命令と共存して使用できますか?
0578デフォルトの名無しさんNGNG
wmsdk.hって何を落とせば入ってくるの?dx9sdk落とせばいい?
9入れたら8戻らないとかあったりしませんよんね
0579デフォルトの名無しさんNGNG
>>577
できるよ。
Surface.GetGraphics() で GDI+ のグラフィックスオブジェクトをゲットできる。
使い終わったら Surface.ReleaseGraphics() で開放すること。

そのときの注意点は以下の通り。

・サーフェスのフォーマットはバックバッファに使われるのと同じ種類でないとダメ。
・サーフェスをミップマップのテクスチャチェーンに入れてはダメ。
・すでにロックしてあるサーフェスに Surface.GetGraphics() を呼び出すと失敗する。
・サーフェスがレンダーターゲットの場合は、ロッカブルであること。
・メモリプールを Pool.Default にした場合はダイナミックバッファであること。
・メモリプールがスクラッチの場合は常に失敗する。
0580デフォルトの名無しさんNGNG
>DirectDrawを使って2D画像を拡大縮小させたりしたいのですが、2D画像のサイズは
>2の倍数しか扱えないのですか?

DirectDrawに関してはんなこた〜ない筈
拡大縮小も任意の数値で思いのママだよ
その昔、爺フォースとかのグラフィックボードが
3Dポリゴン(メッシュ)に貼り付けるテクスチャは
2の乗数でないとダメって仕様なのはあったとは思ったが
たぶんそれと勘違いしてるのかと思われ
0581デフォルトの名無しさんNGNG
>>573
とりあえずソースよろしこ
もしホントなら逝ってきて体験談をここに記す
0582デフォルトの名無しさんNGNG
間違えた>>574だったよ
0583デフォルトの名無しさんNGNG
>>576
>2の倍数しか扱えないのですか?

偶数しか使えないとかいう制限は聞いたことないな
0584デフォルトの名無しさんNGNG
>>526
そろそろ届く頃かな?
本の感想きぼん
0585デフォルトの名無しさんNGNG
526じゃないけどアマゾンで買ってみた。
これくらいの英語ならさくさく読める感じ。高校レベル+専門用語知識

内容は…あんまり深く読んでないのでパス。
4kちょいの出費が痛くなければいいんじゃない?
0586デフォルトの名無しさんNGNG
>>508の被害者がまた一人増えたな。
SAMSマンセー
■ このスレッドは過去ログ倉庫に格納されています