3

XNA 4.0 の学習を開始し、Blender 2.6 を使用して 3ds から fbx/x に変換された 3D モデルを読み込んで描画しようとしています。プログラムはビルド エラーや警告を表示せず、実行可能ファイルを数回開くことができ、問題なく動作しました。しばらくすると、ゲームを開けなくなり、次のエラーが表示され始めました。

AccessViolationException - 保護されたメモリを読み書きしようとしました。これは多くの場合、他のメモリが破損していることを示しています

プロジェクトを友人に送ったところ、彼はゲームをコンパイルして実行することができました。

一部を削除mesh.Draw()するとこれは解決するようですが、モデルを表示する必要があります。

//後で編集:エラーが一時的なものであることがわかったので、しばらくしてから(またはビジュアルスタジオを再度開いて、どちらがこれをトリガーするかまだわかりません)、エラーが発生した場合は、ソースコードとファイルは同じです。

スタックトレース:

System.AccessViolationException は処理されませんでした Message=保護されたメモリを読み書きしようとしました。これは多くの場合、他のメモリが破損していることを示しています。ソース = Microsoft.Xna.Framework.Graphics
StackTrace: Microsoft.Xna.Framework.Graphics.GraphicsDevice.Present (tagRECT* pSource, tagRECT* pDest, HWND__* hOverride) で Microsoft.Xna.Framework.Graphics.GraphicsDevice.Present() で Microsoft.Xna.Framework.GraphicsDeviceManager. Microsoft.Xna.Framework.IGraphicsDeviceManager.EndDraw() で Microsoft.Xna.Framework.Game.EndDraw() で Microsoft.Xna.Framework.Game.DrawFrame() で Microsoft.Xna.Framework.Game.Tick() で。 Microsoft.Xna.Framework.WindowsGameHost.RunOneFrame() で Microsoft.Xna.Framework.WindowsGameHost.ApplicationIdle(Object送信者、EventArgs e) System.Windows.Forms.Application.ThreadContext.System.Windows.Forms で。System.Windows.Forms.Application.ComponentManager.System.Windows.Forms.UnsafeNativeMethods.IMsoComponentManager.FPushMessageLoop(IntPtr dwComponentID、Int32 reason、Int32 pvLoopData) の UnsafeNativeMethods.IMsoComponent.FDoIdle(Int32 grfidlef) System.Windows.Forms.Application. Microsoft.Xna.Framework の System.Windows.Forms.Application.Run(Form mainForm) の System.Windows.Forms.Application.ThreadContext.RunMessageLoop(Int32 の理由、ApplicationContext コンテキスト) の ThreadContext.RunMessageLoopInner(Int32 理由、ApplicationContext コンテキスト)。 WindowsGameHost.Run() at Microsoft.Xna.Framework.Game.RunGame(Boolean useBlockingRun) at Microsoft.Xna.Framework.Game.Run() at _3D.Program.Main(String[] args) in C:\Users\username \Desktop\3D\3D\3D\Program.cs:15行目System.Windows.Forms.Application.ComponentManager.System.Windows.Forms.UnsafeNativeMethods.IMsoComponentManager.FPushMessageLoop(IntPtr dwComponentID、Int32 reason、Int32 pvLoopData) の IMsoComponent.FDoIdle(Int32 grfidlef) System.Windows.Forms.Application.ThreadContext。 Microsoft.Xna.Framework.WindowsGameHost の System.Windows.Forms.Application.Run(Form mainForm) の System.Windows.Forms.Application.ThreadContext.RunMessageLoop(Int32 理由、ApplicationContext コンテキスト) の RunMessageLoopInner (Int32 理由、ApplicationContext コンテキスト)。 Run() at Microsoft.Xna.Framework.Game.RunGame(Boolean useBlockingRun) at Microsoft.Xna.Framework.Game.Run() at _3D.Program.Main(String[] args) in C:\Users\username\Desktop \3D\3D\3D\Program.cs:15行目System.Windows.Forms.Application.ComponentManager.System.Windows.Forms.UnsafeNativeMethods.IMsoComponentManager.FPushMessageLoop(IntPtr dwComponentID、Int32 reason、Int32 pvLoopData) の IMsoComponent.FDoIdle(Int32 grfidlef) System.Windows.Forms.Application.ThreadContext。 Microsoft.Xna.Framework.WindowsGameHost の System.Windows.Forms.Application.Run(Form mainForm) の System.Windows.Forms.Application.ThreadContext.RunMessageLoop(Int32 理由、ApplicationContext コンテキスト) の RunMessageLoopInner (Int32 理由、ApplicationContext コンテキスト)。 Run() at Microsoft.Xna.Framework.Game.RunGame(Boolean useBlockingRun) at Microsoft.Xna.Framework.Game.Run() at _3D.Program.Main(String[] args) in C:\Users\username\Desktop \3D\3D\3D\Program.cs:15行目System.Windows.Forms.Application.ComponentManager.System.Windows.Forms.UnsafeNativeMethods.IMsoComponentManager.FPushMessageLoop(IntPtr dwComponentID、Int32 reason、Int32 pvLoopData) の FDoIdle(Int32 grfidlef) System.Windows.Forms.Application.ThreadContext.RunMessageLoopInner( Int32 の理由、ApplicationContext コンテキスト) の System.Windows.Forms.Application.ThreadContext.RunMessageLoop(Int32 の理由、ApplicationContext コンテキスト) の System.Windows.Forms.Application.Run(Form mainForm) の Microsoft.Xna.Framework.WindowsGameHost.Run( ) Microsoft.Xna.Framework.Game.RunGame(Boolean useBlockingRun) at Microsoft.Xna.Framework.Game.Run() at _3D.Program.Main(String[] args) in C:\Users\username\Desktop\3D \3D\3D\Program.cs:15行目System.Windows.Forms.Application.ComponentManager.System.Windows.Forms.UnsafeNativeMethods.IMsoComponentManager.FPushMessageLoop(IntPtr dwComponentID、Int32 reason、Int32 pvLoopData) の FDoIdle(Int32 grfidlef) System.Windows.Forms.Application.ThreadContext.RunMessageLoopInner( Int32 の理由、ApplicationContext コンテキスト) の System.Windows.Forms.Application.ThreadContext.RunMessageLoop(Int32 の理由、ApplicationContext コンテキスト) の System.Windows.Forms.Application.Run(Form mainForm) の Microsoft.Xna.Framework.WindowsGameHost.Run( ) Microsoft.Xna.Framework.Game.RunGame(Boolean useBlockingRun) at Microsoft.Xna.Framework.Game.Run() at _3D.Program.Main(String[] args) in C:\Users\username\Desktop\3D \3D\3D\Program.cs:15行目System.Windows.Forms.UnsafeNativeMethods.IMsoComponentManager.FPushMessageLoop(IntPtr dwComponentID, Int32 reason, Int32 pvLoopData) at System.Windows.Forms.Application.ThreadContext.RunMessageLoopInner(Int32 reason, ApplicationContext context) at System.Windows.Forms.Application.ThreadContext .RunMessageLoop(Int32 reason, ApplicationContext context) at System.Windows.Forms.Application.Run(Form mainForm) at Microsoft.Xna.Framework.WindowsGameHost.Run() at Microsoft.Xna.Framework.Game.RunGame(Boolean useBlockingRun) at Microsoft.Xna.Framework.WindowsGameHost.Run() Microsoft.Xna.Framework.Game.Run() at _3D.Program.Main(String[] args) in C:\Users\username\Desktop\3D\3D\3D\Program.cs:line 15System.Windows.Forms.UnsafeNativeMethods.IMsoComponentManager.FPushMessageLoop(IntPtr dwComponentID, Int32 reason, Int32 pvLoopData) at System.Windows.Forms.Application.ThreadContext.RunMessageLoopInner(Int32 reason, ApplicationContext context) at System.Windows.Forms.Application.ThreadContext .RunMessageLoop(Int32 reason, ApplicationContext context) at System.Windows.Forms.Application.Run(Form mainForm) at Microsoft.Xna.Framework.WindowsGameHost.Run() at Microsoft.Xna.Framework.Game.RunGame(Boolean useBlockingRun) at Microsoft.Xna.Framework.WindowsGameHost.Run() Microsoft.Xna.Framework.Game.Run() at _3D.Program.Main(String[] args) in C:\Users\username\Desktop\3D\3D\3D\Program.cs:line 15Int32 pvLoopData) の System.Windows.Forms.Application.ThreadContext.RunMessageLoopInner (Int32 の理由、ApplicationContext コンテキスト) の System.Windows.Forms.Application.ThreadContext.RunMessageLoop (Int32 の理由、ApplicationContext コンテキスト) の System.Windows.Forms.Application. Run(フォーム mainForm) で Microsoft.Xna.Framework.WindowsGameHost.Run() で Microsoft.Xna.Framework.Game.RunGame(Boolean useBlockingRun) で Microsoft.Xna.Framework.Game.Run() で _3D.Program.Main( String[] args) in C:\Users\username\Desktop\3D\3D\3D\Program.cs:line 15Int32 pvLoopData) の System.Windows.Forms.Application.ThreadContext.RunMessageLoopInner (Int32 の理由、ApplicationContext コンテキスト) の System.Windows.Forms.Application.ThreadContext.RunMessageLoop (Int32 の理由、ApplicationContext コンテキスト) の System.Windows.Forms.Application. Run(フォーム mainForm) で Microsoft.Xna.Framework.WindowsGameHost.Run() で Microsoft.Xna.Framework.Game.RunGame(Boolean useBlockingRun) で Microsoft.Xna.Framework.Game.Run() で _3D.Program.Main( String[] args) in C:\Users\username\Desktop\3D\3D\3D\Program.cs:line 15Microsoft.Xna.Framework.Game.RunGame(Boolean useBlockingRun) で Microsoft.Xna.Framework.Game.Run() で Microsoft.Xna.Framework.WindowsGameHost.Run() で Windows.Forms.Application.Run(フォーム mainForm) _3D.Program.Main(String[] args) in C:\Users\username\Desktop\3D\3D\3D\Program.cs:line 15Microsoft.Xna.Framework.Game.RunGame(Boolean useBlockingRun) で Microsoft.Xna.Framework.Game.Run() で Microsoft.Xna.Framework.WindowsGameHost.Run() で Windows.Forms.Application.Run(フォーム mainForm) _3D.Program.Main(String[] args) in C:\Users\username\Desktop\3D\3D\3D\Program.cs:line 15
内部例外:

事前に感謝し、私の下手な英語で申し訳ありません.

4

0 に答える 0