トップページ⇒tech
1001コメント303KB

C#でDirectX9 初心者の館

レス数が950を超えています。1000を超えると書き込みができなくなります。
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
0850デフォルトの名無しさんNGNG
その上マルチだ品
0851デフォルトの名無しさんNGNG
  (´⌒⌒⌒`) 
__ 〃|___|ヽ
ヽ\ ノノノ)ヘ)、!〉
 (0_)! (┃┃〈リ
  Vレリ、" lフ/     呼んだ? 
    l´ヾF'Fl  
    〉、_,ノ,ノ  
0852デフォルトの名無しさんNGNG
自作自演なんだからほっといてやれよ・・
0853デフォルトの名無しさんNGNG
じゃあDirectXの話題を投下。といっても俺はPlayしか知らないが。

一番目のパケットが届いてそれの処理をしている間に二番目にパケットが来た場合、
二番目のパケットの受け入れを一時的にロックしておくような機能ってある?

あと確認だが、一回目のReceiveイベントと二回目のReceiveイベントは非同期に処理されるよな?
0854デフォルトの名無しさんNGNG
受け取りたくなければ受け取らなければいい。
0855デフォルトの名無しさんNGNG
>一番目のパケットが届いてそれの処理をしている間に二番目にパケットが来た場合、
>二番目のパケットの受け入れを一時的にロックしておくような機能ってある?
漏れはそれっぽい機能を発見できなかったのでArrayListで解決したよ
パケットくるたびにキャッシュに叩き込んで逐次取り出すってのはだめなのか?
ArrayListはいじくるたびにlockしないと悲惨なことになるが

>一回目のReceiveイベントと二回目のReceiveイベントは非同期に処理されるよな?
デバッグウインドウに処理するたびにメッセージ表示するようにして検証すれ
たぶん非道鬼だったと思った

>受け取りたくなければ受け取らなければいい。
受け取りたいけど受け取れないから保留にしたいという話を・・げふんげふん(咳
0856デフォルトの名無しさんNGNG
Effect.FromFileのStringって2バイト文字が入ってると失敗するんですかね?
デスクトップにEmptyProjectのディレクトリ置いてたせいで実行出来なくて原因を
探すも今時そんな原因も無いだろと思ってたのでハマってしまってたんだが・・・。

あとデバッカのウォッチの動作がおかしいのはバグなんでしょか。
明らかに同一スコープ内のフィールドの中身が"スコープ外です"と表示できなかったり、
あるメソッド内で特定のメソッドを呼んでいるとウォッチで見るクラスや構造体の
定義されてるはずの中身が一部"error: cannot obtain value"と"<未定義の値>"になったり、
"<未定義の値>"をクリックして変更しようとすると文字が巨大化するし。
0857デフォルトの名無しさんNGNG
>>856
「スコープ外です」
「cannot obtain value」
は俺もしょっちゅうあるなあ。どうにかして欲しいよね・・・
0858デフォルトの名無しさんNGNG
なぁなぁ、ManagedDirectXの日本語ドキュメントをVSを使わずに見る方法があるはずなんだが、
どうやってやるんだっけ?
0859在日外国人参政権反対NGNG
マルチ(・A・)イクナイ!!
0860デフォルトの名無しさんNGNG
iexplorer.exe
0861デフォルトの名無しさんNGNG
>>858
#D、C#Bを入れる
0862デフォルトの名無しさんNGNG
I/O書籍シリーズはVC++で書いてるし
やっぱ、VBやらC#より
メンドイだろうけど
キッチリできるんだろうなぁ・・

と言いつつVBでやってみたり・・・('A`)
0863デフォルトの名無しさんNGNG
旧VBやVCはCOMネイティブ対応だからね
ATLなんてまさにActiveX作るためにあるようなものだし

C#やVB.NETだと互換性のためにCOMサポート残してあるだけだから
ラッパクラスが必要になったり
0864デフォルトの名無しさんNGNG
C#でMDXが楽すぎて仕方がない
0865デフォルトの名無しさんNGNG
>>864
禿同。もうC++に戻れないかもしれん・・・。
0866デフォルトの名無しさんNGNG
MDXのドキュメントも、Oct 2004 の日本語ドキュメントでやっと少し
マトモになったしね。
0867デフォルトの名無しさんNGNG
ドキュメントまともになったんだ?
Octインスコするのまんどくさかったけど
やる気がでてきますた
0868デフォルトの名無しさんNGNG
>>856
前に引っかかったことがある。俺も今更と思ったけど、
Effect.FromFileのStringに2バイト文字が入っていると
ロードできないっぽい。

エフェクトファイルをFileStreamで開いて、Effect.FromStreamを
使えば回避できる。
0869デフォルトの名無しさんNGNG
なるほどそんな解決方法が。
それにしてもサンプル(EmptyProject等)がそう書かれてるのでとりあえず修正して欲しいなぁ。
0870デフォルトの名無しさんNGNG
DirectShowがマネージ化されないと話にならないって言うか
0871デフォルトの名無しさんNGNG
MC++が使えないC#使いは話にならないって言うか
0872デフォルトの名無しさんNGNG
>>870
Showは他のコンポーネントと違って、COMクラス・インタフェイスの数が膨大だからねー。
素直にComImportAttributeなりで直接COMを叩くほうがいいんじゃない?
ってスタンスなんじゃないかな。

お手軽版?のAudioVideoPlaybackは機能が少ない分構成も頗るシンプルで、
これはこれで間違っちゃいないとは思うが、
やっぱり標準のマネージShowは見てみたいな。
0873デフォルトの名無しさんNGNG
MC++は意味あるんだろうか。
0874デフォルトの名無しさんNGNG
あるよ
Cで作られてるSDKを.NETに移植するとか
0875デフォルトの名無しさんNGNG
DirectShowのラッパならここにある
ttp://www.conferencexp.net/community/
0876デフォルトの名無しさんNGNG
DirectShowってMP3流せるのと動画再生するの以外に何かできることあるん?

MP3流すためにしかたなく使用してる漏れ程度では
いまいちありがたみがわからんですよ
0877デフォルトの名無しさんNGNG
mpegファイルやreal media ファイルなどの音声、動画ファイルを、
すべて再生できるようにする場合は
読み込むファイルの種類によって、それぞれ対応するしかないのですか?
(realmediaの場合は、Real Player ActiveX Control Libraryを使って
再生したり、そのほかは、QuartzTypeLibを使用したりなど。)
一括して、すべてのファイルを操作できるような方法はないのでしょうか?
0878デフォルトの名無しさんNGNG
対応する汎用CODECを作れば可能。
0879デフォルトの名無しさんNGNG
offscreen = new Surface("C:\\dxdata\\Samples\\C#\\DirectDraw\\Windowed\\無題.bmp", description, draw);
ここの対応してる画像の拡張子はBMPだけですか?
jpgだとエラーが起きて落ちてしまいます。

0880デフォルトの名無しさんNGNG
>>876
TVチューナーやビデオキャプチャ
ビデオやオーディオのエフェクト/変換も自由自在
0881デフォルトの名無しさんNGNG
>TVチューナーやビデオキャプチャ
>ビデオやオーディオのエフェクト/変換も自由自在

マジカヨー そらぁ便利だな
まぁ便利でも対応してないんじゃアレなんだが
Webカメラの画像とかも扱えるのだろうか
0882デフォルトの名無しさんNGNG
>>879
そのSurfaceがDrawのものなのか、3Dのものなのか、自分じゃ何も言わない。エラーの種類も書かない。
もうだめぽ。

DrawにJPEG関係の機能はない。
0883デフォルトの名無しさんNGNG
>>876
USBカメラの画像取り込んでエフェクトかけて遊んだりできます
0884デフォルトの名無しさんNGNG
>USBカメラの画像取り込んでエフェクトかけて遊んだりできます
C#でもManagedDirectXで普通に殺れまつか?
0885デフォルトの名無しさんNGNG
ttp://mobiquitous.com/programming/usbcamera.html
0886デフォルトの名無しさんNGNG
DirectSmellでこれを動作させる方法を教えてください

ttp://headlines.yahoo.co.jp/hl?a=20041206-00000086-mai-bus_all
0887デフォルトの名無しさんNGNG
之で引きこもりの部屋のにおいとかも再現かのうなのかな・・・
0888デフォルトの名無しさんNGNG
>>886
過去ログ読もうね。>>569
0889デフォルトの名無しさんNGNG
>>888

検索してませんでした。すいません。

これで僕の部屋のにおいが再現できました。
明日ネットカフェで試します。
0890デフォルトの名無しさんNGNG
>>886
DirectSmellワロタ
将来はでるかもしれんな
http://www.mainichi-msn.co.jp/today/news/20041207k0000m020046000c.html
0891デフォルトの名無しさんNGNG
>>890
分かってるとは思うが、DirectSmellは既出な。>>562
0892デフォルトの名無しさんNGNG
DirectX December 2004 release
ttp://www.thezbuffer.com/articles/104.aspx

また新しい SDK が公開された模様。
>>749 の予言が的中。

とりあえずリリースノートだけ読んでみた。
MDX のアセンブリバージョンは 1.0.2903.0 になったらしい。
次は来年の二月に公開予定とのこと。

Release Notes
ttp://www.microsoft.com/downloads/details.aspx?FamilyId=358CBC1E-F5AB-417D-9F6F-779BE38EFB69&displaylang=en
0893749NGNG
やったーーーーーーーーーーーーーーーーーーーーーーー!
予言的中!!!

誰かなんかくれ!!!

SDK本体はここだね。
December 2004
ttp://www.microsoft.com/downloads/details.aspx?FamilyId=4E825A37-0C94-4421-9EC8-156E52525D11&displaylang=en
0894デフォルトの名無しさんNGNG
>>893
チューしてやるよ(*゚3゚)
0895デフォルトの名無しさんNGNG
ドキュメントもっと充実キボンヌ
0896デフォルトの名無しさんNGNG
矢継ぎ早にSDKの更新されてますが
これって入れる度に古いSDKアンインストールしてから入れるものなんでしょうか
そのまま上書きしても大丈夫なものでしょうか?
0897デフォルトの名無しさんNGNG
>>896
使い方とかリリースノートくらい読めよ。
読むのすら面倒くさい奴は使うな、向いてない。
0898デフォルトの名無しさんNGNG
>>896
古い奴から順番にいれろ!
新しい奴だけ入れてもいいけど昔のサンプル入ってねぇぞ!!
サンプル以外は一緒だ。精神的に不安定な奴はウィンドウズの再インスコからしとけ。
0899749NGNG
前回の予言が的中しご好評いただいたので、今回もやってみます。

次のバージョンは、DirectX SDK Update Christmas 2004 です。

つーか、たぶん当たります。
0900デフォルトの名無しさんNGNG
>>899
サムいよ偽物。
0901デフォルトの名無しさんNGNG
>>899
情報ありがとう。じゃあ次バージョンは来週末あたりだな。
0902デフォルトの名無しさんNGNG
よく知らないんですけど、このスレ的に
12月ってなんかいいことあるんですか?
0903デフォルトの名無しさんNGNG
javaでDirect3Dプログラミングって不可能?
C++はあまり手つけたくない・・・。
0904デフォルトの名無しさんNGNG
釣りかと思うがマジレスすると、無理、つーか、
JAVAクローンなC#をなぜ使わないのかな。
0905デフォルトの名無しさんNGNG
【徹底討論】Java3Dの可能性について考える
http://pc5.2ch.net/test/read.cgi/tech/1033703640/
0906デフォルトの名無しさんNGNG
DirectXはともかくJavaなら3Dなプログラムもそんな悪くないかと思われ
ただ、ゲーム作るんならおとなしくマイケル開発言語使ったほうがいいと思うが
0907904NGNG
C#良さそうですね。
実は、ゲーム制作業界に入りたいとおもってるんですが、
CG制作で最も一般的なのはどの組み合わせかなと思って。
C++とDirect3Dかな?最近の動向はどうですか?
別にJAVAにこだわってるわけじゃないです。
0908904NGNG
あ、C#やる場合、やっぱり、summer2003か2004ってことに?
0909デフォルトの名無しさんNGNG
そんなことも自分で調べられない人間は、
俺が面接官なら絶対に落とすな。

今現在のゲーム業界にプログラマとして入りたいんなら、
C++を使いこなせることは大前提。
今のゲーム機に.NETなんて入ってると思ってるのか?
0910339NGNG
ゲーム業界なんて、いつ吹き飛ぶか判らんぞ。入ってもいいことないぞ。

0911デフォルトの名無しさんNGNG
>>910
UMDみたいに?(w
0912デフォルトの名無しさんNGNG
>>903
Java3DはDirectXで実装されてるんだがそういう話ではなく?
0913デフォルトの名無しさんNGNG
>>912
俺、去年の今頃JAVA3Dを調べたっきりなんだが、
JAVA3Dが使っているのは、DirectXじゃなくてOpenGLじゃなかったっけ。
DirectXだとWindows限定じゃん。

もし俺の勘違いだったらスマソ。
0914デフォルトの名無しさんNGNG
>>903
J++
0915デフォルトの名無しさんNGNG
>>913
ウィンドウズはDirectXとOpenGLの両方が出てる
何で実装するかなんて決められていない
0916904ではなくて903だったNGNG
>>912
JAVA3Dが結局はDirectXかOpenGLを使ってることは知ってます。
でも、JAVAでゲームとかはあまり良くないというか標準でないと聞いたので。
しかも、3Dやるなら、わざわざJAVAでやる必要性もなく、直でDirectX、OpenGL等
使ったほうがいいかな、と。

色々調べたところ、C++との組み合わせが普通らしく、
でも、C++は難しいのであまり手を付けなくないといった状況です。
やっぱり、C++するしかないのだろうか
C#だとどうなのか?といった感じです。
0917904ではなくて903だったNGNG
JAVAでC++またはC#のようにDirectX等を直に扱えないかなということです。
JAVA3D経由じゃなくて。
そもそも、JAVAVM通り越して、DirectX扱うってむりぽい?
ではなんで、C#の.NETはDirectX使えるんだ?
すいません、何も分かってない状況です。。。
0918デフォルトの名無しさんNGNG
>>917
DirectXというのは何層にもわかれている。
ハードウェア、デバイスドライバ、API、ライブラリ、フレームワーク。
おまいさんが「直」と表現しているのはおそらくAPIのことだろう。
このAPIはCOMとManagedの二種類が用意されている。
つまり二通りの「直」がある。
COMのほうはVC++用のLIBがデフォルトで用意されている。
変換ツール等を使うことでBC++、DelphiなどからでもDirectXを直で扱うことができる。
Managedのほうはもっとシンプルで.NETに乗っていれば基本的にどんな言語からでも使うことができる。
これらAPIの上にライブラリ(D3DXなど)やフレームワーク(DXUT)が乗る。
さらにツールやプラグイン、ドキュメントなどを含めた総称がDirectX SDK。
0919デフォルトの名無しさんNGNG
Q. Javaで直接DirectXを扱えますか?
A. 扱えません
0920904ではなくて903だったNGNG
>>918
説明ありがとうございます。

C#使うとすると、
C# + Managed + DirectX ということになるのかな
おとなくしく、C++にしとけって感じなんですが。。。

.NETが将来どうなるのかが、けっこう不安。。。
0921デフォルトの名無しさんNGNG
C++でDirectXを扱う知識がある上で、C#のDirectXを扱うのは、容易いと思った。
C++での知識があれば「あれはこうやるんだな」ってのがなんとなく想像できちゃうからね
だけどいきなりManaged DirectXから入るのはどうか分からん
0922デフォルトの名無しさんNGNG
まだ先の話だが、C#(.NET)でかくとManaged空間しかいじれなくなることが保障される。
そのためManagedコードに関してはユーザーモードでなくカーネルモードで動かしても問題が生じなくなり、
現在のカーネルモードとユーザーモードの切り替えに生じるロスをなくすことができパフォーマンスが爆発的に増加する。
とあった。時期など不明だがそういうのもきたいされるかも。
0923デフォルトの名無しさんNGNG
とりあえずここにJ#おいときますね
0924デフォルトの名無しさんNGNG
完全にネイティブなコードになるみたいなイメージでいいのかそれは>>922
0925デフォルトの名無しさんNGNG
>>924
えーと、エンタープライズ分野で重要なサーバ類のお仕事の多くが、↓みたいな感じだから、サーバアプリは
場合によってはすごく速くなるだろうけど、DirectXの場合昔からカーネルメモリ空間に直接してるから変わらないと思う。

リクエスト受信
-> TCP/IP処理
-> ユーザーメモリへコピー
-> アプリ処理

(そして処理中のFileやネットワークのI/O処理)
-> データをカーネルメモリへコピー
-> I/O 処理
-> データをユーザメモリへコピー

レスポンス返信
-> 処理結果をカーネルメモリへコピー
-> TCP/IP 処理
0926デフォルトの名無しさんNGNG
なるほど、そいうことね
0927922NGNG
>>924
ネイティブがバイナリのことをさすなら違うと思います。
  アプリ
-------------
  カーネル
が
  
--------------------
  カーネル  アプリ
こんな感じになるのでCPUコンテキストスイッチが発生せず早いとか
>>925
DIRECTXアプリだとどうなんでしょうね。

参考:http://216.239.57.104/search?q=cache:9Dr1Pwcw9yQJ:www.i.u-tokyo.ac.jp/ss/report/04COEsympo/pdf/maeda.pdf+CPU+%E3%82%AB%E3%83%BC%E3%83%8D%E3%83%AB%E3%83%A2%E3%83%BC%E3%83%89+%E3%83%A6%E3%83%BC%E3%82%B6%E3%80%80Pentium&hl=ja
0928デフォルトの名無しさんNGNG
Java,C# ≠ 初心者用の言語
0929デフォルトの名無しさんNGNG
これは初心者用
あれは玄人用
区別したがる奴ほど初心者
あほらしくて見てらんないが
哀れだからエサは与えてみる
0930デフォルトの名無しさんNGNG
とりあえず、VS2005でDirect3Dさわってみた。
仕組みよくわかっとらんが、とりあえず、Begin-EndSceneの間で力技で描画すればよいらしい。
3万ポリゴン表示してもそこそこ動く。
これなら作りたいやつに使っても大丈夫そう。
今知りたいこと。
・ウィンドウの一部に対する描画。
・Zソート?とかの使い方
・マウスと野などの操作との連動。
・マウスでクリックしたときのオブジェクト探す方法。
・透明。
・テキスト、線。

・・・まぁ入門書を素直に買って濃いって請った・・・
0931デフォルトの名無しさんNGNG
・ウィンドウの一部に対する描画。
present

・Zソート?とかの使い方
zbuffer

・マウスと野などの操作との連動。
DirectInput

・マウスでクリックしたときのオブジェクト探す方法。
transform2d
transform3d

・透明。
alpha

・テキスト、線。
drawtext
drawline
0932デフォルトの名無しさんNGNG
>>931
感謝
0933デフォルトの名無しさんNGNG
Java,C# ≠ 初心者用の言語
0934デフォルトの名無しさんNGNG
>>930=932
頼むからダメ日記はここじゃなく広告のウラに書いてくれ。
今の時代、本がないと何も出来ない奴は何やっても無駄。あきらめれ。
0935デフォルトの名無しさんNGNG
自治厨多杉
0936デフォルトの名無しさんNGNG
2chは日記帳じゃないYO!
0937デフォルトの名無しさんNGNG
個人的にはそういう批判もチラシの裏にでも書いてて欲しいがな。
まあ、例によってオレモナー、なんだけど。
0938デフォルトの名無しさんNGNG
資料がないと何もできないと思うんだが…
本っていうのはたまたま媒体が紙なだけで。
0939デフォルトの名無しさんNGNG
>>934
じゃぁお前はプログラム関係の本を雑誌を含め一切買ったことがなく、すべてSDKとWEB(サイト、掲示板、メーリングリストなど)だけで済ましてるんだな?
してそれにどれほどの意味が?
0940デフォルトの名無しさんNGNG
>>939
少し同意。漏れはWin者なのでSDKとMSDNでかなり十分足りてるけど、Unixの人は
正直本読むの悪くないと思う。manpage を頭から順に流し読みするとか、し難いし・・・
0941デフォルトの名無しさんNGNG
「本」って「資料」だろ?
「ヘルプ」とか「Webサイト」とかも「資料」だろ?
なぜ「本」だけを目の敵にするのかがわからん。
0942デフォルトの名無しさんNGNG
これは初心者用
あれは玄人用
区別したがる奴ほど初心者
本がどうとか
MSNみろとか
ググれとか
言ってる奴ほど自分で調べない
広告とか
日記とか
うざいと言う奴のほうが遥かに邪魔
0943デフォルトの名無しさんNGNG
結局誰かがまとめたものよりも自分で散在した資料を纏め上げろってことなんでしょ?
その分の時間をほかに使えばいいだけなのに。
誰かがしたことをまた自分でしてオナニーしてるだけな部分もあるのでないの?
0944934NGNG
>>939
うーん、正直に言うと、プログラム関係の雑誌は買ったことあるな。
93年ごろまでのベーマガ。今でも全て持ってる。
別に「意味」があったわけじゃなく、ど田舎育ちで小遣いも月千円だった俺にとって唯一の情報源だったから。

ここ十年はプログラム関係の本は恐らく買ってない(と思われ)。
今は、研究・開発のためのリソースはヘルプとWebのみだな。
情報の取捨選択さえてきぱきと出来れば、今現在はこれで必要充分。

>>941
うーん、本が嫌いだからかなー。
小説とかも読書感想文の宿題以外では読んだことないのよ。

>>942
俺は別に初心者とか玄人とか区別はしないが、MSNは見ないぞ。
ちなみに、広告のウラ、プリンタ用紙のウラは大好きだな。徹底活用してる。
0945デフォルトの名無しさんNGNG
>>942
自治臭い君が一番邪魔だからw
0946デフォルトの名無しさんNGNG
普通にインストールできないんですが、何故ですか?
0947デフォルトの名無しさんNGNG
>>946
自治臭い君が一番邪魔だからw
0948デフォルトの名無しさんNGNG
ヘルプやらドキュメントを読んでも
3Dの用語がさっぱり分からない_| ̄|○
0949デフォルトの名無しさんNGNG
>>921
C++でDirectX使ったこと無い人間が
C#+MDXをいじってみてるが、結構辛いですよorz

MDXのドキュメントがあんまりないから
C+++DirectXのドキュメントを探して、その中の
関数名をSDKドキュメントから探す、の繰り返しです

でも、D3DXHOGEHOGE〜みたいに定数を
書き連ねまくらなくてすむのはいいと思った>MDX
0950デフォルトの名無しさんNGNG
ね、ワールド変換ってどんなとき使うの?

仕組みはわかるんだが、自分だとビューをぐりぐり動かすのしか使わないもんで・・・
レス数が950を超えています。1000を超えると書き込みができなくなります。