DirectXによる3Dグラフィックス

タグの編集
投稿者 yufuru  (社会人) 投稿日時 2010/7/22 13:11:48
『初級講座 第44回 周辺にあるテクノロジ』の”2.DirectXによる3Dグラフィックス”を試して見ようと、『Microsoft DirectX SDK (February 2010)』をDLLしてインストール(OS: Windows XP SP3)して、”参照の追加”で『Microsoft.DirectX』・『Microsoft.DirectX.Direct3D』・『Microsoft.DirectX.Direct3DX』を追加しようとして、”.NET及びCOM”を見て見たのですが左記の3のコンポーネント名が表示されません。 唯一其れらしき以下の名前の物がCOMに有りましたが、必要とする3のコンポーネントが見当たりません。 何か私の操作に問題が有るのでしょうか?

<COM>

Microsoft DirectX Transforms Coe Type Library
Microsoft DirectX Transforms Image Transforms Type Library

お忙しいとは思いますが、お時間が有りましたらご教授お願い致します。
投稿者 fshy  (社会人) 投稿日時 2010/7/23 10:19:01
「参照」を試してみてはいかがでしょうか?

C:\Windows\Microsoft.NET\DirectX for Managed Code\1.0.2902.0
投稿者 yufuru  (社会人) 投稿日時 2010/7/23 10:43:28
fshy 様

早速のご連絡有り難う御座います。

お蔭様で、必要な3のコンポーネントを参照させる事が出来ました。

今後とも宜しくお願い致します。  以上
投稿者 yufuru  (社会人) 投稿日時 2010/7/23 14:21:42
fshy 様

Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load

        Me.ClientSize = New System.Drawing.Size(400, 300)

        '▼前処理

        If InitializeGraphics() = False Then
            MsgBox("Direct3Dを初期化できませんでした。プロジェクトは終了します。", MsgBoxStyle.Critical)
        Else

上記の、InitializeGraphics()が.NET4.0に対応(?)していないようでエラーに成ったので、 対象のフレームワークを.NET Framework 3.0に変更して動作確認した所正常に動作しました。 尚、InitializeGraphics()が.NET4.0に対応(?)に付いてはこれから調べて見ます。

以上
投稿者 fshy  (社会人) 投稿日時 2010/7/23 14:41:24
下記の過去ログが有効かもしれません。

http://rucio.cloudapp.net/ThreadDetail.aspx?ThreadId=9535

投稿者 yufuru  (社会人) 投稿日時 2010/7/24 16:57:41
fshy 様

早速のご連絡有難う御座いました。

WindowsXP 32BitがインストールされているPCで、32Bit用として作成(ただし、 対象のフレームワークを.NET Framework 3.0に変更)したものを、Windows7 64BitがインストールされているPCで動作確認しましたが、全く問題なく動作しました。
但し、64Bit用にコンパイルし直した所動作はしませんでした。

取りあえずご報告まで。 以上
投稿者 fshy  (社会人) 投稿日時 2010/7/25 00:59:28
環境
Windows7 x64
Visual Basic 2010 Express
Framework4

(1)「'System.IO.FileLoadException' の初回例外が (プロジェクト名).exe で発生しました。」
とエラー表示

(2)下記を参考に、app.configに追記

http://nky-tech-sdt.blogspot.com/2010/02/net-framework-40.html

(3)初回デバッグ開始後、下記のエラー表示

DLL 'C:\Windows\assembly\GAC\Microsoft.DirectX.Direct3DX\1.0.2902.0__31bf3856ad364e35\Microsoft.DirectX.Direct3DX.dll' は、OS ローダー ロック内でマネージ実行を試行しています。DllMain またはイメージ初期化関数内でマネージ コードを実行しないでください。この動作は、アプリケーションをハングさせる原因になる可能性があります。

(4)もう一度デバッグ開始すると動作しました。
原因はよくわかりません。
投稿者 yufufu  (社会人) 投稿日時 2010/7/26 09:05:02
fshy 様

ご連絡有難う御座います。

動作環境が全く同じなので、今夜(app.config)を書き換えて試して見ます。

以上
投稿者 yufufu  (社会人) 投稿日時 2010/7/26 09:43:23
fshy 様

Windows XP SP3、VB2010 Express .NET4.0の環境で、App.configを以下の様に書き換えると何のエラーも発生せず、問題なく動作するのを確認しました。
今夜、Windows7 64Bit、VB2010 Express .NET4.0の環境でどうなるか確認して見ます。

以上
投稿者 (削除されました)  () 投稿日時 2010/7/26 16:57:38
(削除されました)
投稿者 yufuru  (社会人) 投稿日時 2010/7/26 16:59:41
”App.configを以下の様に書き換える”と記述しましたが、記述を忘れていましたので、改めて書き換え内容を記述します。

<startup useLegacyV2RuntimeActivationPolicy="true">