質問者
C# Express にてDirectX

質問
すべての返信
-
え?そうなの?
と思いいろいろと調べてみましたら
http://www.humo.vis.ne.jp/directx/01/01.html
にどうやらテンプレートなしでいける方法があり
このとおりにやってみたらどうやらいけそうです。
どうもありがとうございます。
ただ、Microsoft.DirectX.DirectX3D.dll
のバージョン違いのものが複数インストールされているようで
そのかねあいでうまくいきません。
別の問題が発生しましたがとりあえずは一歩前進
した感があります。
-
DirectX SDK 2006 June版で試してみました。
ただし、VC#2005Express Editionではなく、VS2005Professional Editionです。
アプリケーション テンプレートを作成する
のとおり作成したら、それらしいのができました。
だたし、やはり参照設定が問題で、どのバージョンを使えばいいか微妙でした。
一応
Microsoft.DirectX.Direct3D が 1.0.2902.0 しかないので
Microsoft.DirectX
も
Microsoft.DirectX.Direct3DX
も同じバージョンにしたところ、エラーになってしまったので、とりあえず、
Microsoft.DirectX.Direct3DX
を1つずつバージョンをあげていったところ 1.0.2905.0 ですべてのエラーがなくなりました。
まぁ、間違っていれば、再度同じ名前でテンプレートを作成すれば上書きされるようなのでとりあえずはこれでどうでしょうか? -
SOSOSOSO さんからの引用 バージョンアップはどのようにされましたか?
DirecetXはバージョンアップはしていません。2006 Juneを入れただけ。
あ、もしかして
Microsoft.DirectX.Direct3DX
を1つずつバージョンをあげていったところ 1.0.2905.0 ですべてのエラーがなくなりましたのこと?参照設定のところに、
Microsoft.DirectX.Direct3DX 1.0.2902.0
Microsoft.DirectX.Direct3DX 1.0.2903.0
Microsoft.DirectX.Direct3DX 1.0.2904.0
Microsoft.DirectX.Direct3DX 1.0.2905.0
・
・
・
ってのを、上から参照設定してコンパイルエラーがでたら、プロジェクトツリーに追加された参照設定を削除して、再度違うバージョンを参照設定しなおしてってのを繰り返しただけです。 -
僕も同じようにさせていただいたのですが問題が解決しないです。
エラー 1 型 'Microsoft.DirectX.Direct3D.Device' は 'c:\WINDOWS\Microsoft.NET\DirectX for Managed Code\2.0.0.0_x86\Microsoft.DirectX.dll' および 'c:\WINDOWS\Microsoft.NET\DirectX for Managed Code\1.0.2902.0\Microsoft.DirectX.Direct3D.dll の両方に存在します。
となってしまいました。
しかも、Microsoft.DirectX.Direct3DX
は今回のプログラムに必要なく
Microsoft.DirectX.Direct3D
だけあればいいので、うーーーん。という感じです。
エラーのヘルプページを見ても
http://msdn2.microsoft.com/ja-jp/library/64wh5743(d=ide).aspx
何のことやら?という感じでした。
これは僕のやり方が間違ってるからなのか、それともソフトの問題なのでしょうか?
-
SOSOSOSO さんからの引用 僕も同じようにさせていただいたのですが問題が解決しないです。
エラー 1 型 'Microsoft.DirectX.Direct3D.Device' は 'c:\WINDOWS\Microsoft.NET\DirectX for Managed Code\2.0.0.0_x86\Microsoft.DirectX.dll' および 'c:\WINDOWS\Microsoft.NET\DirectX for Managed Code\1.0.2902.0\Microsoft.DirectX.Direct3D.dll の両方に存在します。
となってしまいました。
Microsoft.DirectXは2.0.0.0ではなく1.0.2902.0を参照してみてはどうでしょうか? -
DirectXのテンプレートの話ですが、
theSpoke.netの掲示板で似たような話題がありました。
(ただし,VS2005ではないですが)
DirectXウィザードは2004Summerより廃止された
そうです。 -
エラー内容についてですが、
> Failed creating the Direct3D device
はデバイスの作成に失敗したことを意味し、
> System.NullReferenceException
はメソッドの引数に null パラメータを渡しているか、null 参照の変数を使おうとしていることを意味します。
ただ、これだけでは原因がわからないので、
・どのスレッドを参考にしたのか(リンクとか)
・どんなコードを書いたのか
・使用している環境と、DirectX のバージョン、DLL のバージョンなどを詳しく書いていただくと答えられるかもしれません。
-
六番目のレスに貼り付けてあったこちらを参考にしました。
http://www.microsoft.com/japan/msdn/coding4fun/weekend/apptemplate/default.aspx
なので、自分ではコードをいじくってないと思います。
このサイトの2/3あたりで、テンプレートを作成する前に保存、実行と書いてあったので
それをしようとしてうまく言ってないといったところです。
使用してる環境は
入れてから何もいじくっていないvisual 2005 c# express
こちらもインストールしただけのDirectx SDK August 2006 (ランタイムは9.0c)
DLLは触ってないと思います参考にしたサイトの通りに進んでいって、参照設定の中の3つの関連付けは
microsoft.DirectXが1.0.2902.0
microsoft.DirectXDirect3Dも同じ
microsoft.DirectXDirect3DXは最新と思われる1.0.2911.0です。実際の警告の、一つ目の警告では
アプリケーションデータ¥テンポラリープロジェクト¥Directxアプリケーション¥コモン内の
dxmutmisc.cs行 778
dxmut.cs行 2818
が問題があるといわれ、二つ目の警告も場所は同じで
dxmutmisc.cs行 788
dxmut.cs行 2721、2844、2147、569、582
EmptyProject.cs 437に問題があるとのことです。
-
一応
・Windows XP SP2
・Visual C# 2005 Express Edition
・DirectX SDK August 2006
・Microsoft.DirectX 1.0.2902.0
・Microsoft.DirectX.Direct3D 1.0.2902.0
・Microsoft.DirectX.Direct3DX 1.0.2911.0
・Inter(R) 82865G Graphics Controllerでリンク先と同じ等に設定して実行してみましたが、問題なく Empty Project が起動しました。
エラー行を見てみると、「Effect.OnLostDevice」と「Effect.OnResetDevice」メソッドで失敗しているようなので、Effect あたりが問題のように思えます。
ただ、原因が特定できないのでなんともいえないのですが、ためしに EmptyProject.cs の137 行目の ShaderFlags を ShaderFlags.None に設定してみてください。
それでもだめなら、もう一回リンク先の手順で作成してみてください。注意する点としてはファイルは 2003 用のファイルを読み込むようにしてください。
ビデオカードの問題という可能性もありますが、その場合だとさすがに対処法はわからないです。
-
何度か試しましたが、だめだったのでもう片方の方法でやったところうまくいきました。
テンプレート作りはあきらめて、http://www.humo.vis.ne.jp/directx/01/01.html
の方法でいきます。お騒がせしてすいませんでした。