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
0674デフォルトの名無しさん
NGNGなるほど、プロジェクション変換で間違ってたんですね。
解決して良かった、良かった。
プロジェクション・マトリックスはワールド座標系を同次座標系に
変換するマトリックスです。
0675デフォルトの名無しさん
NGNG>変換するマトリックスです。
なに言ってんのあんた。
「ワールド座標系」と「同次座標系」は言葉のカテゴリが全然違うでしょ。
プロジェクション行列は、ビュー座標からプロジェクション座標への変換。
DirectXでは、どっちの座標も同次座標で表される。
0676デフォルトの名無しさん
NGNG0677デフォルトの名無しさん
NGNGワールド座標をベクトル(x,y,z,1)とするとこれに(ビュー行列x射影行列)
を掛けて求まったベクトル(x',y',z',w')の各成分をw'で割ると
スクリーン座標が求まる。っつーかこれがわかってないと
3Dプログラミングができないと思うんだけどどうしてんの?
0678デフォルトの名無しさん
NGNGc:\Windows\media\start.wavで再生の練習しようとしたんだけど、
うまくいかなくてどーにもこうにもおかしいと思ったんです。
自分のコードが駄目かもと思ったがサンプルのbinにあるcsPlaySoundでも再生不可能。
ほかのファイルなら自分のもcsPlaySoundもOK。
調べていくとBufferTooSmallExceptionってのが発生してるらしい。
ということは極度に小さい長さのファイルは再生できないってこと???
そんなあほな…。C++じゃこんなことなかったのに。
というわけで折角C#に移行しようとしたのにいきなり出鼻を挫かれたという感じ。
0679デフォルトの名無しさん
NGNGセットアップ中の承諾したあとにコンポーネントをダウンロードしますってところから
進みません
漏れには何が何だかわからないんです(´・ω・`)
どうしたらいいのですか。・゚・(ノД`)・゚・。
0680デフォルトの名無しさん
NGNG視点固定でマウスで操作しないタイプならなんとかなるポ
その説明でも分からない漏れは死んできまつ
0681デフォルトの名無しさん
NGNG0682デフォルトの名無しさん
NGNGhttp://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/DirectX9_c/directx/graphics/programmingguide/fixedfunction/transforms/transforms.asp
これでも読めれ。
多分、同次座標系が解らんと意味がわからんと思うので解説。
3DCG用途では透視変換や平行移動を4行4列の行列で扱える
ようにするため同次座標系というのをつかう。同次座標系では通常の
3次元ベクトル(x,y,z)に等質wを加えた(x,y,z,w)で表現される。
通常の3次元ベクトル(これをユークリッド座標系という)と
同次座標系との相互変換は以下のとおり。
・3次元ユークリッド座標系でx,y,z)で表されるベクトルを同次座標系(x',y',z',w')に変換
w=1とし、x,y,zはそのままつかう。(x',y',z',w')=(x,y,z,1)となる。
・同次座標系(x,y,z,w)を3次元ユークリッド座標系(x',y',z')で表されるベクトルに変換
同次座標系の各成分をwで割る。(x',y',z')=(x/w,y/w,z/w)となる。
以上から例を挙げれば同次座標系(x,y,z,w)と(2x,2y,2z,2w)は3次元ユークリッド
座標系上では同一のベクトルとなる。
ビュー行列と射影行列はネットでも検索して勉強してくれ。
昔(DirectX5とか6とかの時代)はSDKの解説はもうちょっと詳しかったし
もっぱら話題の中心がこんなことばっかりだったからもっと解説している
サイトが多かった(宇治社中とかが親切だった)けど、今はあまりこんなの
だれも解説しないからな。初心者には厳しいかも。もし手に入るようだったら
昔のDirectXのSDKのリファレンスでも読んでくれ。
0683682
NGNG書籍で情報を得るなら以下の2冊がいいと思ったけど初心者には
必要なところを抜き出して読むのが難しいかもしれない。
・コンピュータグラフィックス 理論と実践
http://www.amazon.co.jp/exec/obidos/ASIN/4939007375/qid%3D1096460418/249-2167903-6130707
・ゲームプログラミングのための3Dグラフィックス数学
http://www.amazon.co.jp/exec/obidos/ASIN/4274064050/qid%3D1096460363/249-2167903-6130707
たしかどちらかといえば「ゲームプログラミングのための3Dグラフィックス数学」
のほうが数学としてはわかりやすくまとまっていたように記憶している。
(手元に本がないし長らく読んでいないので詳細がわからない)
0684デフォルトの名無しさん
NGNGVector3.Projectつかえばいい
ここにサンプルあるから
ttp://www.interq.or.jp/black/minami-m/
C++だけどね。まあわかるよ。
0685デフォルトの名無しさん
NGNGstart.wavなのに始められない、ってなんか笑えるな。w
いや笑っちゃいけないのかもしれないけれど…
0686デフォルトの名無しさん
NGNG俺はYouTooFoolExceptionが発生して半分あきらめてる
0687デフォルトの名無しさん
NGNG俺に対してTooFoolってこと?
それにしても短い音は駄目っぽ…
音の後半を無音にすれば行けるがスッキリしないな
あとDuplicateに対応するのってManagedだとCloneなんだろか。
0688デフォルトの名無しさん
NGNG0689デフォルトの名無しさん
NGNGハンドルされていない例外 ThreadAbonedException が発生したため、このスレは
0690デフォルトの名無しさん
NGNG0691デフォルトの名無しさん
NGNGYouIsBigFoolManException
だろw
0692デフォルトの名無しさん
NGNG0693デフォルトの名無しさん
NGNG有名なネタだ
0694在日外国人参政権反対
NGNG0695デフォルトの名無しさん
NGNG0696デフォルトの名無しさん
NGNGアリガトン ・ゲームプログラミングのための3Dグラフィックス数学 は手にとってみたけど
公式ばっかりならんでてウザかったんで挫折してしまいますた
>>684
ミラクル トンクス。
やっぱり便利なメソがあったんでつね
自分で計算しろとかいうウザイやつばかりだったんで感激でつ
0697デフォルトの名無しさん
NGNGウザイウザイ言う君が一番ウザイ。
0698デフォルトの名無しさん
NGNG0699デフォルトの名無しさん
NGNGAudioVideoPlaybackを使ってMP3を複数同時に再生するにはどうしたらいいのですか?
最終的には2つ以上の音が合成されて出力させたいのです。
0700デフォルトの名無しさん
NGNGnew Audio("2.mp3").Play();
じゃだめなのん?いや全然試してないんだけどね。
0701デフォルトの名無しさん
NGNG0702デフォルトの名無しさん
NGNGnew Vorbis.OggAudio("1.ogg").Play();
でいいような気が。
0703デフォルトの名無しさん
NGNGWAVEファイルに見せかければSecondaryBufferにStream食わせて簡単に再生できるからねぇ。
だけど実際はストリーミングしないでワンショットとして扱うらしく、長いファイルの演奏に向いてなさげ。
結局ストリーム再生しようとしたら今まで通りその辺を自力で書かないと駄目かもなあ。
0704デフォルトの名無しさん
NGNGいや規則は分かるが、なんでこんな変な付け方なんだ?
だれか解説きぼん
0705デフォルトの名無しさん
NGNGDirectX 9.0 SDK Update - (October 2004)
リリースsage。
0706デフォルトの名無しさん
NGNG0707デフォルトの名無しさん
NGNG一生待ってろ
0708デフォルトの名無しさん
NGNG0709デフォルトの名無しさん
NGNG気分は夏でも暦は10月なんだなこれが
0710デフォルトの名無しさん
NGNGつーか、October入れるのにSummerをアンインストールする必要はない、
というかアンインストール「してはいけない」。
だから君は正しい手順を踏んでるよ。
0711デフォルトの名無しさん
NGNG今回のOctoberでは変化ないな。
変な上がり方はともかく、内容が変わったのに数字に変化ないのはどーかと思うが。
0712デフォルトの名無しさん
NGNG再配布パッケージのリンクなんだが、サポートOSにFreeBSD入ってるのはどう思う?
0713デフォルトの名無しさん
NGNG0714デフォルトの名無しさん
NGNG0715デフォルトの名無しさん
NGNG200MB超えてるんですが orz
0716デフォルトの名無しさん
NGNG0717デフォルトの名無しさん
NGNGやっぱりSDKがあった方がいい。
0718デフォルトの名無しさん
NGNGテレホ終了で自動的にモデムが切れるソフト使えば余裕
0719デフォルトの名無しさん
NGNGってSDKでつか?
それともマネージドコードDirectXもインスコされるランタイムでつか?
0720デフォルトの名無しさん
NGNGランタイム
0721デフォルトの名無しさん
NGNG0722デフォルトの名無しさん
NGNGそういう事見たいやね。
うちの翻訳ソフトの出力:
このダウンロードは、開発者が含むことができる再分配可能なDirectX 9.0cエンド・ユーザーに
彼らの製品を与えます。
この更新は、DirectX 9.0 SDKアップデート(2004年10月)から管理されたコードのための
DirectXアップデートを含みます。
管理されたコードのためのDirectX == Managed DirectX
0723デフォルトの名無しさん
NGNG0724デフォルトの名無しさん
NGNGだけどそれがメンドイ
ところで
DirectX 9.0c Redistributable for Software Developers - Multilingual - 日本語
with updated DirectX for Managed Code (October 2004)
って フレームワーク以外何も入ってない環境でも コレ一つでおK?
0725デフォルトの名無しさん
NGNG元に戻してもおかしくならない方法って結構複雑にならない?
もっと簡単に出来ないのかな。
0726デフォルトの名無しさん
NGNG0727デフォルトの名無しさん
NGNGいや、通常は全画面(画面の解像度とか変えたりするほう)で表示してるけど、
Alt+Tabキーとか押されたら最小化されちゃうから
そのときに描画処理やらないようにするための処理が結構面倒で
何とかならんもんなのかなぁと。
0728725
NGNG今書いてみたらあんまり面倒じゃなかった。
0729デフォルトの名無しさん
NGNG0730デフォルトの名無しさん
NGNG何をしたか書こうな。
0731デフォルトの名無しさん
NGNG面倒だと思ったことをやってみたけど
実際は面倒じゃなかったってだけのことだったんで
書かなくてもいいかなと思ったんだけど書いとくか。
bool deviceLost = false;をどっかに置いといて
レンダリングメソッドにて
public void Render()
{
if ((deviceLost) || (Form.ActiveForm != this))
{
System.Threading.Thread.Sleep(100);
}
続く
0732デフォルトの名無しさん
NGNG{
try
{
device.TestCooperativeLevel();
}
catch (DeviceLostException)
{
return;
}
catch (DeviceNotResetException)
{
device.Reset(device.PresentationParameters);
OnDeviceResizing(device, new CancelEventArgs());
}
deviceLost = false;
}
device.Clear(ClearFlags.Target | ClearFlags.ZBuffer, options.Background, 1.0f, 0);
//ここで描画処理
try
{
device.Present();
}
catch (DeviceLostException)
{
deviceLost = true;
}
}
0733デフォルトの名無しさん
NGNGそれともDirectDrawをDirect3Dから使えるようにしたものでつか?
0734デフォルトの名無しさん
NGNGDirectDrawのDrawはオフスクリーンサーフェスからバックバッファへ転送する。
まあDirect3Dのほうはポリゴンだから変形が楽だとか
演算やシェーダを使ってエフェクトをかけたりすることもできるというあたりかなり高機能
0735デフォルトの名無しさん
NGNG回転するパラメータもないのに。
0736デフォルトの名無しさん
NGNG何を言ってるんですか意味ありまくりですよあなた
>回転するパラメータもないのに。
Draw2DやRotationZで回転するときの中心補正点になるんだよ
使わないなら Vector3(0,0,0)でも指定しとき
0737デフォルトの名無しさん
NGNGありがとうございました
0738デフォルトの名無しさん
NGNGRotationXやRotationYは使える?
漏れのダメポPCだとRotationZしかつかえない
ほかは表示がヘンチクリンだ
0739デフォルトの名無しさん
NGNGこっちでも表示がヘンチクリンだ。
0740デフォルトの名無しさん
NGNGVector3とMatrixの積を返すメソッド。
ヘルプで探したのですが見つからなかったので…。
0741デフォルトの名無しさん
NGNG掛けるだけじゃ出来なかった?
Vector3 v = 〜〜〜〜;
Matrix matrix = 〜〜〜〜〜〜;
v = v*matrix;
0742たけし
NGNGまずsprite.Begin(SpriteFlags.None);とsprite.End();が必要になったのはわかりました。
ですが、Draw関数を以下のように、体力の黄色と赤のゲージを描画するコードだと、1本で体力を表したいのに、上下に2つ画像が描画されます。
sprite.Draw(
barTEX,
new Rectangle(0,0,(hero.energy>0)?hero.energy:0,16),
new Vector3(0,0,0),
new Vector3(10,10,0),
Color.White);
sprite.Draw(
barTEX,
new Rectangle((hero.energy>0)?hero.energy:0,16,300,32),
new Vector3(0,0,0),
new Vector3(10+hero.energy,10,0),
Color.White);
Draw2Dは、
public void Draw2D(Texture, Point, float, Point, Color);
だけうまく描画されましたが、他は描画さえされません。
以前のバージョンのコードを、ちょっと変更してプログラミングしただけなので、それがまずいのかもしれませんが、どうやればうまくスプライトのDrawとDraw2Dを描画できるでしょうか?
0744デフォルトの名無しさん
NGNG0745デフォルトの名無しさん
NGNGプロジェクト開いて検索汁
0746デフォルトの名無しさん
NGNG以前のバージョンではちゃんと表示されてたのか?
0747たけし
NGNGこれでうまくいきました。
0748デフォルトの名無しさん
NGNG0749デフォルトの名無しさん
NGNG0750デフォルトの名無しさん
NGNG0751デフォルトの名無しさん
NGNG0752デフォルトの名無しさん
NGNGしばらくの間
2004夏で我慢することにした
いちいち仕様カエルナヨ・・MSさんよぉ
0753デフォルトの名無しさん
NGNG別にそれで構わんが、2004夏でManagedなら
TextureLoader.FromFileには気をつけろよ。
このせいで2004十月が出たようなもんだから。
0754デフォルトの名無しさん
NGNGManagedで2004夏使ってなおかつTextureLoader.FromFileを使ってるんだが
何がどうまずいの?
0755デフォルトの名無しさん
NGNG使ってて気づかないの?もしかしてエラー出力もチェックしたことないとか?
せっかくキーワードがそのまま書かれてるんだからちょっとは調べろよ。
http://www.gdncom.jp/general/bbs/ShowPost.aspx?PostID=14982
0756デフォルトの名無しさん
NGNGやりたいのは2Dの処理です。パズルゲームとかトランプゲームみたいなのを作りたいと思ってます。
(わざわざDirectXでやるな、といわれそうですが・・・)
いろいろ探してみたんですが、C++で解説してたり、3Dを扱ってたりでお手上げです。
いちおうあげておきます
0757デフォルトの名無しさん
NGNGグビチョン
0758デフォルトの名無しさん
NGNGやりたいことが2Dでも、3Dは勉強しなきゃならんと思う。
DXSDK\Samples\Managed\Direct3D\Tutorialsにあるサンプルを1から6までやるべし。
0759デフォルトの名無しさん
NGNGうむむ、なかなか読み応えありますね
DirectXで2Dをやろうとすると、DirectDrawよりもDirect3D.Spriteを使ったほうが良い場合が多いそうですね(理由はわかりませんが)
とりあえず3Dに挑戦してみます。どうもでした
0760デフォルトの名無しさん
NGNG普通に頂点を作ってテクスチャを張るべし。
0761デフォルトの名無しさん
NGNGほほぅ
肝に免じておきます
0762デフォルトの名無しさん
NGNG0763デフォルトの名無しさん
NGNG2004Summerでまたスプライト関数の引数が変更したらしいな
0764デフォルトの名無しさん
NGNG0765デフォルトの名無しさん
NGNG3DSpriteは仕様変更がウンザリなのと
ちょっと古いPCやドライバの更新もできないような
ヘタレ君の環境だとマトモに表示されないケースが多いのがマズー
0766デフォルトの名無しさん
NGNGGUI+なる謎の物体を突然持ち出す君の方がマズー
君ってチンカス以下だね
0767デフォルトの名無しさん
NGNGつまんね
C#にもC++並のサンプルつけてくれMS
VBに至ってはサンプルナッシングかよ
かわいそうに
0768デフォルトの名無しさん
NGNGオマエモナー
0769デフォルトの名無しさん
NGNG0770デフォルトの名無しさん
NGNG0771デフォルトの名無しさん
NGNGC++とかのほうが情報多いんだし。
0772デフォルトの名無しさん
NGNG……これが仕事でなければ。
0773デフォルトの名無しさん
NGNG■ このスレッドは過去ログ倉庫に格納されています