protected override void Dispose(bool disposing) { if (!_disposed) { if (disposing) { ImmediateContext.ClearState(); Util.ReleaseCom(ref _sky); Util.ReleaseCom(ref _terrain); Util.ReleaseCom(ref _minimap); Util.ReleaseCom(ref _sMap); Util.ReleaseCom(ref _ssao); Util.ReleaseCom(ref _whiteTex); Util.ReleaseCom(ref _screenQuadIB); Util.ReleaseCom(ref _screenQuadVB); Util.ReleaseCom(ref _sphereModel); Effects.DestroyAll(); InputLayouts.DestroyAll(); RenderStates.DestroyAll(); Patch.DestroyPatchIndexBuffers(); } _disposed = true; } base.Dispose(disposing); }
public override bool Init() { if (!base.Init()) { return(false); } Effects.InitAll(Device); InputLayouts.InitAll(Device); _sky = new Sky(Device, "Textures/sunsetcube1024.dds", 5000.0f); _floorTexSRV = ShaderResourceView.FromFile(Device, "Textures/floor.dds"); _stoneTexSRV = ShaderResourceView.FromFile(Device, "Textures/stone.dds"); _brickTexSRV = ShaderResourceView.FromFile(Device, "Textures/bricks.dds"); BuildDynamicCubeMapViews(); BuildShapeGeometryBuffers(); BuildSkullGeometryBuffers(); Window.KeyDown += SwitchLights; return(true); }
public override bool Init() { if (!base.Init()) { return(false); } Effects.InitAll(Device); InputLayouts.InitAll(Device); RenderStates.InitAll(Device); _texMgr = new TextureManager(); _texMgr.Init(Device); _bunnyModel = BasicModel.LoadSdkMesh(Device, _texMgr, "Models/bunny.sdkmesh", "Textures"); _bunnyInstance = new BasicModelInstance(_bunnyModel); _effect = new DirectionalLightingEffect(Device, "FX/forwardLight.fxo"); var passDesc = _effect.Ambient.GetPassByIndex(0).Description; _layout = new InputLayout(Device, passDesc.Signature, InputLayoutDescriptions.PosNormalTexTan); AddUIElements(); return(true); }
protected override void Dispose(bool disposing) { if (!_disposed) { if (disposing) { Util.ReleaseCom(ref _sky); Util.ReleaseCom(ref _shapesVB); Util.ReleaseCom(ref _shapesIB); Util.ReleaseCom(ref _skullVB); Util.ReleaseCom(ref _skullIB); Util.ReleaseCom(ref _stoneTexSRV); Util.ReleaseCom(ref _brickTexSRV); Util.ReleaseCom(ref _stoneNormalTexSRV); Util.ReleaseCom(ref _brickNormalTexSRV); Effects.DestroyAll(); InputLayouts.DestroyAll(); RenderStates.DestroyAll(); } _disposed = true; } base.Dispose(disposing); }
protected override void Dispose(bool disposing) { if (!_disposed) { if (disposing) { Util.ReleaseCom(ref _gridModel); Util.ReleaseCom(ref _cylinderModel); Util.ReleaseCom(ref _sky); Util.ReleaseCom(ref _texMgr); foreach (var t in _rules) { var fireWorkRule = t; Util.ReleaseCom(ref fireWorkRule); } _rules.Clear(); Effects.DestroyAll(); InputLayouts.DestroyAll(); RenderStates.DestroyAll(); } _disposed = true; } base.Dispose(disposing); }
protected override void Dispose(bool disposing) { if (!_disposed) { if (disposing) { Util.ReleaseCom(ref _sky); Util.ReleaseCom(ref _shapesVB); Util.ReleaseCom(ref _shapesIB); Util.ReleaseCom(ref _skullVB); Util.ReleaseCom(ref _skullIB); Util.ReleaseCom(ref _floorTexSRV); Util.ReleaseCom(ref _stoneTexSRV); Util.ReleaseCom(ref _brickTexSRV); Util.ReleaseCom(ref _dynamicCubeMapDSV); Util.ReleaseCom(ref _dynamicCubeMapSRV); for (int i = 0; i < _dynamicCubeMapRTV.Length; i++) { Util.ReleaseCom(ref _dynamicCubeMapRTV[i]); } Effects.DestroyAll(); InputLayouts.DestroyAll(); } _disposed = true; } base.Dispose(disposing); }
protected override void Dispose(bool disposing) { if (!_disposed) { if (disposing) { ImmediateContext.ClearState(); Util.ReleaseCom(ref _landVB); Util.ReleaseCom(ref _landIB); Util.ReleaseCom(ref _waveVB); Util.ReleaseCom(ref _waveIB); Util.ReleaseCom(ref _boxVB); Util.ReleaseCom(ref _boxIB); Util.ReleaseCom(ref _grassMapSRV); Util.ReleaseCom(ref _wavesMapSRV); Util.ReleaseCom(ref _boxMapSRV); Effects.DestroyAll(); InputLayouts.DestroyAll(); RenderStates.DestroyAll(); } _disposed = true; } base.Dispose(disposing); }
public override bool Init() { if (!base.Init()) { return(false); } _waves = new Waves(); _waves.Init(160, 160, 1.0f, 0.03f, 5.0f, 0.3f); Effects.InitAll(Device); InputLayouts.InitAll(Device); RenderStates.InitAll(Device); _grassMapSRV = ShaderResourceView.FromFile(Device, "Textures/grass.dds"); _wavesMapSRV = ShaderResourceView.FromFile(Device, "Textures/water2.dds"); _boxMapSRV = ShaderResourceView.FromFile(Device, "Textures/WireFence.dds"); BuildLandGeometryBuffers(); BuildWaveGeometryBuffers(); BuildCrateGeometryBuffers(); Window.KeyDown += SwitchRenderState; return(true); }
protected override void Dispose(bool disposing) { if (!_disposed) { if (disposing) { ImmediateContext.ClearState(); Util.ReleaseCom(ref _randomTex); Util.ReleaseCom(ref _flareTexSRV); Util.ReleaseCom(ref _rainTexSRV); Util.ReleaseCom(ref _sky); Util.ReleaseCom(ref _terrain); Patch.DestroyPatchIndexBuffers(); Util.ReleaseCom(ref _rain); Util.ReleaseCom(ref _fire); Effects.DestroyAll(); InputLayouts.DestroyAll(); RenderStates.DestroyAll(); } _disposed = true; } base.Dispose(disposing); }
protected override void Dispose(bool disposing) { if (!_disposed) { if (disposing) { Util.ReleaseCom(ref _sky); Util.ReleaseCom(ref _sMap); Util.ReleaseCom(ref _skullVB); Util.ReleaseCom(ref _skullIB); Util.ReleaseCom(ref _screenQuadVB); Util.ReleaseCom(ref _screenQuadIB); Util.ReleaseCom(ref _texMgr); Util.ReleaseCom(ref _gridModel); Util.ReleaseCom(ref _boxModel); Util.ReleaseCom(ref _sphereModel); Util.ReleaseCom(ref _cylinderModel); Effects.DestroyAll(); InputLayouts.DestroyAll(); RenderStates.DestroyAll(); } _disposed = true; } base.Dispose(disposing); }
public override bool Init() { if (!base.Init()) { return(false); } Effects.InitAll(Device); InputLayouts.InitAll(Device); RenderStates.InitAll(Device); _sky = new Sky(Device, "Textures/snowcube1024.dds", 5000.0f); _texMgr = new TextureManager(); _texMgr.Init(Device); _waves = new Waves(); _waves.Init(Device, _texMgr, 40, 60); BuildShapeGeometryBuffers(); BuildSkullGeometryBuffers(); return(true); }
public override bool Init() { if (!base.Init()) { return(false); } _waves = new Waves(); _waves.Init(160, 160, 1.0f, 0.03f, 5.0f, 0.3f); Effects.InitAll(Device); InputLayouts.InitAll(Device); RenderStates.InitAll(Device); _grassMapSRV = ShaderResourceView.FromFile(Device, "Textures/grass.dds"); _wavesMapSRV = ShaderResourceView.FromFile(Device, "Textures/water2.dds"); _boxMapSRV = ShaderResourceView.FromFile(Device, "Textures/WireFence.dds"); var filenames = new [] { "Textures/tree0.dds", "Textures/tree1.dds", "Textures/tree2.dds", "Textures/tree3.dds" }; _treeTextureMapArraySRV = Util.CreateTexture2DArraySRV(Device, ImmediateContext, filenames, Format.R8G8B8A8_UNorm); BuildLandGeometryBuffers(); BuildWaveGeometryBuffers(); BuildCrateGeometryBuffers(); BuildTreeSpritesBuffers(); Window.KeyDown += SwitchRenderState; return(true); }
public override bool Init() { if (!base.Init()) { return(false); } Effects.InitAll(Device); InputLayouts.InitAll(Device); RenderStates.InitAll(Device); Patch.InitPatchData(Terrain.CellsPerPatch, Device); _sky = new Sky(Device, "Textures/grasscube1024.dds", 5000.0f); var tii = new InitInfo { HeightMapFilename = null, LayerMapFilename0 = "textures/grass.dds", LayerMapFilename1 = "textures/darkdirt.dds", LayerMapFilename2 = "textures/stone.dds", LayerMapFilename3 = "Textures/lightdirt.dds", LayerMapFilename4 = "textures/snow.dds", BlendMapFilename = null, HeightScale = 50.0f, HeightMapWidth = 2049, HeightMapHeight = 2049, CellSpacing = 0.5f, Seed = 0, NoiseSize1 = 3.0f, Persistence1 = 0.7f, Octaves1 = 7, NoiseSize2 = 2.5f, Persistence2 = 0.8f, Octaves2 = 3, }; _terrain = new Terrain(); _terrain.Init(Device, ImmediateContext, tii); _camera.Height = _terrain.Height; AddUIElements(); _camera.SetLens(0.25f * MathF.PI, AspectRatio, 1.0f, 1000.0f); _ssao = new Ssao(Device, ImmediateContext, ClientWidth, ClientHeight, _camera.FovY, _camera.FarZ); _whiteTex = ShaderResourceView.FromFile(Device, "Textures/white.dds"); _sMap = new ShadowMap(Device, SMapSize, SMapSize); _sceneBounds = new BoundingSphere(new Vector3(), MathF.Sqrt(_terrain.Width * _terrain.Width + _terrain.Depth * _terrain.Depth) / 2); _minimap = new Minimap(Device, ImmediateContext, MinimapSize, MinimapSize, _terrain, _camera); return(true); }
protected override async void InternalLoad() { // Compile Vertex and Pixel shaders var vertexShaderDescription = await this.assetsDirectory.ReadAndCompileShader(this.graphicsContext, "HLSL", "VertexShader", ShaderStages.Vertex, "VS"); var pixelShaderDescription = await this.assetsDirectory.ReadAndCompileShader(this.graphicsContext, "HLSL", "FragmentShader", ShaderStages.Pixel, "PS"); var vertexShader = this.graphicsContext.Factory.CreateShader(ref vertexShaderDescription); var pixelShader = this.graphicsContext.Factory.CreateShader(ref pixelShaderDescription); var vertexBufferDescription = new BufferDescription((uint)Unsafe.SizeOf <Vector4>() * (uint)this.vertexData.Length, BufferFlags.VertexBuffer, ResourceUsage.Default); var vertexBuffer = this.graphicsContext.Factory.CreateBuffer(this.vertexData, ref vertexBufferDescription); // Prepare Pipeline var vertexLayouts = new InputLayouts() .Add(new LayoutDescription() .Add(new ElementDescription(ElementFormat.Float4, ElementSemanticType.Position)) .Add(new ElementDescription(ElementFormat.Float4, ElementSemanticType.Color))); var pipelineDescription = new GraphicsPipelineDescription { PrimitiveTopology = PrimitiveTopology.TriangleList, InputLayouts = vertexLayouts, Shaders = new GraphicsShaderStateDescription() { VertexShader = vertexShader, PixelShader = pixelShader, }, RenderStates = new RenderStateDescription() { RasterizerState = RasterizerStates.CullBack, BlendState = BlendStates.Opaque, DepthStencilState = DepthStencilStates.ReadWrite, }, Outputs = this.frameBuffer.OutputDescription, }; this.pipelineState = this.graphicsContext.Factory.CreateGraphicsPipeline(ref pipelineDescription); this.commandQueue = this.graphicsContext.Factory.CreateCommandQueue(); var swapChainDescription = this.swapChain?.SwapChainDescription; var width = swapChainDescription.HasValue ? swapChainDescription.Value.Width : this.surface.Width; var height = swapChainDescription.HasValue ? swapChainDescription.Value.Height : this.surface.Height; this.viewports = new Viewport[1]; this.viewports[0] = new Viewport(0, 0, width, height); this.scissors = new Rectangle[1]; this.scissors[0] = new Rectangle(0, 0, (int)width, (int)height); this.vertexBuffers = new Buffer[1]; this.vertexBuffers[0] = vertexBuffer; }
public override bool Init() { if (!base.Init()) { return(false); } Effects.InitAll(Device); InputLayouts.InitAll(Device); RenderStates.InitAll(Device); _texMgr = new TextureManager(); _texMgr.Init(Device); _gridModel = new BasicModel(); _gridModel.CreateGrid(Device, 20, 20, 40, 40); _gridModel.Materials[0] = new Material { Diffuse = Color.SaddleBrown, Specular = new Color4(16, .9f, .9f, .9f) }; _gridModel.DiffuseMapSRV[0] = _texMgr.CreateTexture("Textures/floor.dds"); _gridModel.NormalMapSRV[0] = _texMgr.CreateTexture("textures/floor_nmap.dds"); _sphereModel = new BasicModel(); _sphereModel.CreateSphere(Device, 0.3f, 5, 4); _sphereModel.Materials[0] = new Material { Ambient = Color.Blue, Diffuse = Color.Blue, Specular = new Color4(64.0f, 1.0f, 1.0f, 1.0f) }; _sphereModel.NormalMapSRV[0] = _texMgr.CreateTexture("Textures/stones_nmap.dds"); _cylinderModel = new BasicModel(); _cylinderModel.CreateCylinder(Device, 1, 1, 3, 20, 20); _cylinderModel.Materials[0] = new Material { Ambient = Color.Green, Diffuse = Color.Green, Specular = new Color4(64.0f, 1.0f, 1.0f, 1.0f) }; _cylinderModel.NormalMapSRV[0] = _texMgr.CreateTexture("Textures/stones_nmap.dds"); _grid = new BasicModelInstance(_gridModel) { TexTransform = Matrix.Scaling(10, 10, 1), World = Matrix.Scaling(10, 1, 10) * Matrix.Translation(0, 0, 90) }; _sphere = new BasicModelInstance(_sphereModel); _cylinder = new BasicModelInstance(_cylinderModel) { World = Matrix.Translation(0, 1.5f, 0) }; return(true); }
public override bool Init() { if (!base.Init()) { return(false); } Effects.InitAll(Device); InputLayouts.InitAll(Device); RenderStates.InitAll(Device); BuildMapGeomertryBuffers(); return(true); }
public override bool Init() { if (!base.Init()) { return(false); } Effects.InitAll(Device); _fx = Effects.BasicFX; InputLayouts.InitAll(Device); _diffuseMapSRV = ShaderResourceView.FromFile(Device, "Textures/WoodCrate01.dds"); BuildGeometryBuffers(); return(true); }
protected override void Dispose(bool disposing) { if (!_disposed) { if (disposing) { Util.ReleaseCom(ref _mapVB); Util.ReleaseCom(ref _mapIB); RenderStates.DestroyAll(); Effects.DestroyAll(); InputLayouts.DestroyAll(); } _disposed = true; } base.Dispose(disposing); }
protected override void Dispose(bool disposing) { if (!_disposed) { if (disposing) { Util.ReleaseCom(ref _boxVB); Util.ReleaseCom(ref _boxIB); Util.ReleaseCom(ref _diffuseMapSRV); Effects.DestroyAll(); InputLayouts.DestroyAll(); } _disposed = true; } base.Dispose(disposing); }
public override bool Init() { if (!base.Init()) { return(false); } Effects.InitAll(Device); InputLayouts.InitAll(Device); BuildSkullGeometryBuffers(); BuildInstancedBuffer(); BuildBoxBuffers(); return(true); }
protected override void Dispose(bool disposing) { if (!_disposed) { if (disposing) { Util.ReleaseCom(ref _skullVB); Util.ReleaseCom(ref _skullIB); Util.ReleaseCom(ref _instanceBuffer); Effects.DestroyAll(); InputLayouts.DestroyAll(); } _disposed = true; } base.Dispose(disposing); }
public override bool Init() { if (!base.Init()) { return(false); } Effects.InitAll(Device); _fx = Effects.BasicFX; InputLayouts.InitAll(Device); _fireAtlas = new TextureAtlas(Device, Directory.GetFiles("Textures", "fire*.bmp")); BuildGeometryBuffers(); return(true); }
public override bool Init() { if (!base.Init()) { return(false); } Effects.InitAll(Device); _fx = Effects.BasicFX; InputLayouts.InitAll(Device); BuildShapeGeometryBuffers(); BuildSkullGeometryBuffers(); Window.KeyDown += SwitchLights; return(true); }
public override bool Init() { if (!base.Init()) { return(false); } Effects.InitAll(Device); InputLayouts.InitAll(Device); RenderStates.InitAll(Device); Patch.InitPatchData(Terrain.CellsPerPatch, Device); _sky = new Sky(Device, "Textures/grasscube1024.dds", 5000.0f); var tii = new InitInfo { HeightMapFilename = null, LayerMapFilename0 = "textures/grass.dds", LayerMapFilename1 = "textures/darkdirt.dds", LayerMapFilename2 = "textures/stone.dds", LayerMapFilename3 = "Textures/lightdirt.dds", LayerMapFilename4 = "textures/snow.dds", BlendMapFilename = null, HeightScale = 50.0f, HeightMapWidth = 2049, HeightMapHeight = 2049, CellSpacing = 0.5f, Seed = 0, NoiseSize1 = 1.0f, Persistence1 = 0.7f, Octaves1 = 7, NoiseSize2 = 2.5f, Persistence2 = 0.8f, Octaves2 = 3 }; _terrain = new Terrain(); _terrain.Init(Device, ImmediateContext, tii); _camera.Height = _terrain.Height; AddUIElements(); return(true); }
public override bool Init() { if (!base.Init()) { return(false); } Effects.InitAll(Device); InputLayouts.InitAll(Device); RenderStates.InitAll(Device); _texMgr = new TextureManager(); _texMgr.Init(Device); _bunnyModel = BasicModel.LoadSdkMesh(Device, _texMgr, "Models/bunny.sdkmesh", "Textures"); _bunnyInstance = new BasicModelInstance(_bunnyModel); _effect = new FowardLightingEffect(Device, "FX/ForwardLight.fxo"); var blendDesc = new BlendStateDescription { AlphaToCoverageEnable = false, IndependentBlendEnable = false }; blendDesc.RenderTargets[0].BlendEnable = true; blendDesc.RenderTargets[0].SourceBlend = BlendOption.One; blendDesc.RenderTargets[0].DestinationBlend = BlendOption.One; blendDesc.RenderTargets[0].BlendOperation = BlendOperation.Add; blendDesc.RenderTargets[0].SourceBlendAlpha = BlendOption.One; blendDesc.RenderTargets[0].DestinationBlendAlpha = BlendOption.One; blendDesc.RenderTargets[0].BlendOperationAlpha = BlendOperation.Add; blendDesc.RenderTargets[0].RenderTargetWriteMask = ColorWriteMaskFlags.All; _additiveBlend = BlendState.FromDescription(Device, blendDesc); var passDesc = _effect.Ambient.GetPassByIndex(0).Description; _layout = new InputLayout(Device, passDesc.Signature, InputLayoutDescriptions.PosNormalTexTan); AddUIElements(); return(true); }
public override bool Init() { if (!base.Init()) { return(false); } Effects.InitAll(Device); InputLayouts.InitAll(Device); RenderStates.InitAll(Device); _texMgr = new TextureManager(); _texMgr.Init(Device); _treeModel = new BasicModel(Device, _texMgr, "Models/tree.x", "Textures"); _modelInstance = new BasicModelInstance(_treeModel) { World = Matrix.RotationX(MathF.PI / 2) }; _stoneModel = new BasicModel(Device, _texMgr, "Models/stone.x", "Textures"); _stoneInstance = new BasicModelInstance(_stoneModel) { World = Matrix.Scaling(0.1f, 0.1f, 0.1f) * Matrix.Translation(2, 0, 2) }; _dwarfModel = new BasicModel(Device, _texMgr, "Models/Bob.md5mesh", "Textures", true); for (int i = 0; i < _dwarfModel.Materials.Count; i++) { _dwarfModel.Materials[i] = new Material() { Ambient = Color.DarkGray, Diffuse = Color.White, Specular = new Color4(128, 1f, 1.0f, 1.0f) }; } _dwarfInstance = new BasicModelInstance(_dwarfModel) { World = Matrix.RotationX(-MathF.PI / 2) * Matrix.Scaling(0.05f, 0.05f, 0.05f) * Matrix.Translation(4, 0, 4) }; return(true); }
public override bool Init() { if (!base.Init()) { return(false); } Enable4XMsaa = true; Effects.InitAll(Device); InputLayouts.InitAll(Device); RenderStates.InitAll(Device); _sky = new Sky(Device, "Textures/grasscube1024.dds", 5000.0f); var tii = new InitInfo { HeightMapFilename = "Textures/terrain.raw", LayerMapFilename0 = "textures/grass.dds", LayerMapFilename1 = "textures/darkdirt.dds", LayerMapFilename2 = "textures/stone.dds", LayerMapFilename3 = "Textures/lightdirt.dds", LayerMapFilename4 = "textures/snow.dds", BlendMapFilename = "textures/blend.dds", HeightScale = 50.0f, HeightMapWidth = 2049, HeightMapHeight = 2049, CellSpacing = 0.5f }; Patch.InitPatchData(Terrain.CellsPerPatch, Device); _terrain = new Terrain(); _terrain.Init(Device, ImmediateContext, tii); _randomTex = Util.CreateRandomTexture1DSRV(Device); _flareTexSRV = Util.CreateTexture2DArraySRV(Device, ImmediateContext, new[] { "Textures/flare0.dds" }, Format.R8G8B8A8_UNorm); _fire = new ParticleSystem(); _fire.Init(Device, Effects.FireFX, _flareTexSRV, _randomTex, 500); _fire.EmitPosW = new Vector3(0, 1.0f, 120.0f); _rainTexSRV = Util.CreateTexture2DArraySRV(Device, ImmediateContext, new[] { "Textures/raindrop.dds" }, Format.R8G8B8A8_UNorm); _rain = new ParticleSystem(); _rain.Init(Device, Effects.RainFX, _rainTexSRV, _randomTex, 10000); return(true); }
public override bool Init() { if (!base.Init()) { return(false); } Effects.InitAll(Device); InputLayouts.InitAll(Device); RenderStates.InitAll(Device); _sky = new Sky(Device, "Textures/grasscube1024.dds", 5000.0f); _texMgr = new TextureManager(); _texMgr.Init(Device); _gridModel = new BasicModel(); _gridModel.CreateGrid(Device, 20, 20, 40, 40); _gridModel.Materials[0] = new Material { Diffuse = Color.LightGray, Specular = new Color4(16, .9f, .9f, .9f) }; _gridModel.DiffuseMapSRV[0] = _texMgr.CreateTexture("Textures/floor.dds"); _gridModel.NormalMapSRV[0] = _texMgr.CreateTexture("textures/floor_nmap.dds"); _grid = new BasicModelInstance(_gridModel) { TexTransform = Matrix.Scaling(10, 10, 1), World = Matrix.Scaling(10, 1, 10) }; InitFireworksRules(); _cylinderModel = new BasicModel(); _cylinderModel.CreateCylinder(Device, 1, 1, 3, 20, 20); _cylinderModel.Materials[0] = new Material { Ambient = Color.Green, Diffuse = Color.Green, Specular = new Color4(64.0f, 1.0f, 1.0f, 1.0f) }; _cylinderModel.DiffuseMapSRV[0] = _texMgr.CreateTexture("Textures/stones.dds"); _cylinderModel.NormalMapSRV[0] = _texMgr.CreateTexture("Textures/stones_nmap.dds"); _cylinder = new BasicModelInstance(_cylinderModel) { World = Matrix.Translation(0, 1.5f, 0) }; return(true); }
protected override void Dispose(bool disposing) { if (!_disposed) { if (disposing) { Util.ReleaseCom(ref _landVB); Util.ReleaseCom(ref _landIB); Util.ReleaseCom(ref _waveVB); Util.ReleaseCom(ref _waveIB); Util.ReleaseCom(ref _grassMapSRV); Util.ReleaseCom(ref _wavesMapSRV); Effects.DestroyAll(); InputLayouts.DestroyAll(); } _disposed = true; } base.Dispose(disposing); }
protected override void Dispose(bool disposing) { if (!_disposed) { if (disposing) { Util.ReleaseCom(ref _texMgr); Util.ReleaseCom(ref _geosphereModel); Util.ReleaseCom(ref _sphereModel); Effects.DestroyAll(); InputLayouts.DestroyAll(); RenderStates.DestroyAll(); } _disposed = true; } base.Dispose(disposing); }