Używam silnika Ogre 3D (MOgre) i mam problem z obsługą paneli. Mam taki kod (fragment jednej z klas):
public Overlay DebugConsoleOverlay;
public OverlayContainer DebugConsolePanel;
public void CreateDebugConsole()
{
DebugConsoleOverlay = OverlayManager.Singleton.Create("DebugConsole_Overlay");
DebugConsolePanel = OverlayManager.Singleton.CreateOverlayElement("Panel", "DebugConsole_Panel") as OverlayContainer;
DebugConsolePanel.MetricsMode = GuiMetricsMode.GMM_RELATIVE;
DebugConsolePanel.SetDimensions(1.0f, 0.22f);
DebugConsolePanel.SetPosition(0, 0);
DebugConsolePanel.MaterialName = "Console_B_Material";
DebugConsoleOverlay.Add2D(DebugConsolePanel);
DebugConsoleOverlay.Hide();
DebugConsolePanel.Hide();
I z nieznanych mi przyczyn pojawia się błąd w funkcji ShowDebugConsole():
System.AccessViolationException was unhandled
Message=Attempted to read or write protected memory... (Orginal PL:"Nastąpiła próba odczytu lub zapisu pamięci chronionej. Często wskazuje to, że inna pamięć jest uszkodzona.")
Source=Mogre
StackTrace:
w Ogre.Overlay.show(Overlay* )
w Mogre.Overlay.Show()
w Abc.MainC.ShowDebugConsole() w File3.cs:wiersz 116
w Abc.KeyboardC.Update() w File2.cs:wiersz 283
w Abc.MainC.Update() w File.cs:wiersz 124
w Abc.Program.Main(String[] args) w Program.cs:wiersz 15
w System.AppDomain._nExecuteAssembly(Assembly assembly, String[] args)
w System.AppDomain.ExecuteAssembly(String assemblyFile, Evidence assemblySecurity, String[] args)
w Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly()
w System.Threading.ThreadHelper.ThreadStart_Context(Object state)
w System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
w System.Threading.ThreadHelper.ThreadStart()
InnerException:
Nie wiem jaka jest przyczyna i wydaje mi się, że przyczyną jest Ogre, jak rozwiązać ten problem?