public bool Render() { // Increment the texture translation position. TextureTranslate(); // Clear the buffer to begin the scene as Black. D3D.BeginScene(0, 0, 0, 1f); // Generate the view matrix based on the camera's position. Camera.Render(); // Get the world, view, and projection matrices from camera and d3d objects. Matrix viewMatrix = Camera.ViewMatrix; Matrix worldMatrix = D3D.WorldMatrix; Matrix projectionMatrix = D3D.ProjectionMatrix; // Put the model vertex and index buffers on the graphics pipeline to prepare them for drawing. Model.Render(D3D.DeviceContext); // Render the model with the texture translation shader. if (!TranslateShader.Render(D3D.DeviceContext, Model.IndexCount, worldMatrix, viewMatrix, projectionMatrix, Model.TextureCollection.Select(item => item.TextureResource).ToArray(), TextureTranslation)) { return(false); } // Present the rendered scene to the screen. D3D.EndScene(); return(true); }
private bool RenderScene() { // Generate the view matrix based on the camera position. Camera.Render(); // Get the world, view, and projection matrices from camera and d3d objects. var viewMatrix = Camera.ViewMatrix; var worldMatrix = D3D.WorldMatrix; var projectionMatrix = D3D.ProjectionMatrix; // Rotate the world matrix by the rotation value so that the triangle will spin. Rotate(); // Rotate the world matrix by the rotation value so that the triangle will spin. Matrix.RotationY(Rotation, out worldMatrix); // Increment the texture translation position. TextureTranslate(); // Put the model vertex and index buffers on the graphics pipeline to prepare them for drawing. Model.Render(D3D.DeviceContext); // Setup a clipping plane. var clipPlane = new Vector4(0, 1, 0, 0); // Render the model using the color shader. if (!TranslateShader.Render(D3D.DeviceContext, Model.IndexCount, worldMatrix, viewMatrix, projectionMatrix, Model.TextureCollection.Select(item => item.TextureResource).ToArray(), TextureTranslation)) { return(false); } return(true); }
public void Shutdown() { // Release the camera object. Camera = null; // Release the translate shader object. TranslateShader?.ShutDown(); TranslateShader = null; // Release the model object. Model?.Shutdown(); Model = null; // Release the Direct3D object. D3D?.ShutDown(); D3D = null; }
public Renderer() { CreateWindow(); DirectX = new Dx11(Form); ScreenSize = new Vector2I(ConfigurationManager.Config.Width, ConfigurationManager.Config.Height); Light = new Light { Direction = new Vector3(1.0f, -1.0f, 0.0f), Color = new Vector4(1.0f, 1.0f, 1.0f, 1.0f), AmbiantColor = new Vector4(0.16f, 0.16f, 0.16f, 1.0f), SpecularPower = 32.0f, SpecularColor = new Vector4(1.0f, 1.0f, 0.7f, 1.0f) }; ColorShader = new ColorShader(DirectX.Device); TextureShader = new TextureShader(DirectX.Device); LightShader = new LightShader(DirectX.Device); TranslateShader = new TranslateShader(DirectX.Device); CircleShader = new FontShader(DirectX.Device); FontShader = new FontShader(DirectX.Device); TextManager = new TextManager(DirectX.Device, ConfigurationManager.Config.Width, ConfigurationManager.Config.Height); TextureManager = new TextureManager(DirectX.Device); _renderables = new List <RenderableGameComponent>(); }
public void Shutdown() { // Release the translate shader object. if (TranslateShader != null) { TranslateShader.Shuddown(); TranslateShader = null; } // Release the clip plane shader object. if (ClipPlaneShader != null) { ClipPlaneShader.Shuddown(); ClipPlaneShader = null; } // Release the fog shader object. if (FogShader != null) { FogShader.Shuddown(); FogShader = null; } // Release the texture shader object. if (TextureShader != null) { TextureShader.Shuddown(); TextureShader = null; } // Release the debug window object. if (DebugWindow != null) { DebugWindow.Shutdown(); DebugWindow = null; } // Release the render to texture object. if (RenderTexture != null) { RenderTexture.Shutdown(); RenderTexture = null; } // Release the light object. Light = null; // Release the shader object. if (LightShader != null) { LightShader.Shuddown(); LightShader = null; } // Release the model object. if (Model != null) { Model.Shutdown(); Model = null; } // Release the light shader object. if (BumpMapShader != null) { BumpMapShader.Shuddown(); BumpMapShader = null; } // Release the model object. if (BumpMapModel != null) { BumpMapModel.Shutdown(); BumpMapModel = null; } // Release the text object. if (Text != null) { Text.Shutdown(); Text = null; } // Release the camera object. if (Camera != null) { Camera = null; } // Release the Direct3D object. if (D3D != null) { D3D.Shutdown(); D3D = null; } }
public bool Initialize(SystemConfiguration configuration, IntPtr windowHandle) { try { // Create the Direct3D object. D3D = new DX11(); // Initialize the Direct3D object. if (!D3D.Initialize(configuration, windowHandle)) { MessageBox.Show("Could not initialize Direct3D", "Error", MessageBoxButtons.OK); return(false); } // Create the camera object Camera = new Camera(); // Initialize a base view matrix the camera for 2D user interface rendering. Camera.SetPosition(0, 0, -10); Camera.Render(); var baseViewMatrix = Camera.ViewMatrix; // Create the model class. Model = new Model(); // Initialize the model object. if (!Model.Initialize(D3D.Device, "cube.txt", new[] { "seafloor.dds" })) { MessageBox.Show("Could not initialize the model object", "Error", MessageBoxButtons.OK); return(false); } // Create the shader object. TranslateShader = new TranslateShader(); // Initialize the shader object. if (!TranslateShader.Initialize(D3D.Device, windowHandle)) { MessageBox.Show("Could not initialize the shader", "Error", MessageBoxButtons.OK); return(false); } // Create the light object. Light = new Light(); // Initialize the light object. Light.SetAmbientColor(0.15f, 0.15f, 0.15f, 1.0f); Light.SetDiffuseColor(1, 1, 1, 1f); Light.SetDirection(0, 0, 1); Light.SetSpecularColor(0, 1, 1, 1); Light.SetSpecularPower(16); if (SystemConfiguration.DebugWindowOn) { // Create the render to texture object. RenderTexture = new RenderTexture(); // Initialize the render to texture object. if (!RenderTexture.Initialize(D3D.Device, configuration)) { return(false); } // Create the debug window object. DebugWindow = new DebugWindow(); // Initialize the debug window object. if (!DebugWindow.Initialize(D3D.Device, configuration.Width, configuration.Height, 100, 100 * configuration.Height / configuration.Width)) { MessageBox.Show("Could not initialize the debug window object.", "Error", MessageBoxButtons.OK); return(false); } // Create the texture shader object. TextureShader = new TextureShader(); // Initialize the texture shader object. if (!TextureShader.Initialize(D3D.Device, windowHandle)) { MessageBox.Show("Could not initialize the texture shader object.", "Error", MessageBoxButtons.OK); return(false); } } return(true); } catch (Exception ex) { MessageBox.Show("Could not initialize Direct3D\nError is '" + ex.Message + "'"); return(false); } }