public void Dispose() { var ogreSubsystem = engineResourceManager.getSubsystemResource("Ogre"); ogreSubsystem.removeResourceGroup("Internal"); engineResourceManager.initializeResources(); if (OgreConfig.SaveMicrocodeCache && GpuProgramManager.Instance.IsCacheDirty && MicrocodeCachePath != null) { try { using (Stream stream = File.Open(MicrocodeCachePath, System.IO.FileMode.Create, System.IO.FileAccess.ReadWrite, System.IO.FileShare.Read)) { GpuProgramManager.Instance.saveMicrocodeCache(stream); Log.Info("Saved microcode cache {0}", MicrocodeCachePath); } } catch (Exception ex) { Log.Error("{0} saving microcode cache {1}.\nReason:{2}", ex.GetType().Name, MicrocodeCachePath, ex.Message); } } OgreInterface_DestroyVaryingCompressedTextures(); GpuProgramManager.Instance.Dispose(); HighLevelGpuProgramManager.Instance.Dispose(); MaterialManager.getInstance().Dispose(); MeshManager.getInstance().Dispose(); SkeletonManager.getInstance().Dispose(); HardwareBufferManager.getInstance().Dispose(); TextureManager.getInstance().Dispose(); OgreDataStream.DisposeSharedPtrs(); destroyRendererWindow(primaryWindow); root.Dispose(); OgreInterface_UnloadRenderSystem(renderSystemPlugin); if (deviceLostListener != null) { deviceLostListener.Dispose(); } if (Disposed != null) { Disposed.Invoke(this); } }
/// <summary> /// Gets the buffer bound to the given source index. /// </summary> /// <param name="index">The index of the buffer to retrieve.</param> /// <returns>The buffer bound to index.</returns> public HardwareVertexBufferSharedPtr getBuffer(ushort index) { HardwareBufferManager bufferManager = HardwareBufferManager.getInstance(); return(bufferManager.getVertexBufferObject(VertexBufferBinding_getBuffer(vertexBufferBinding, index, bufferManager.ProcessVertexBufferCallback))); }
public HardwarePixelBufferSharedPtr getBuffer(uint face = 0, uint mipmap = 0) { HardwareBufferManager bufferManager = HardwareBufferManager.getInstance(); return(bufferManager.getPixelBufferObject(Texture_getBuffer(texture, new UIntPtr(face), new UIntPtr(mipmap), bufferManager.ProcessPixelBufferCallback))); }