internal Engine_Camera() { #region //Get Instances m_d3d = Engine_Renderer.Instance; #endregion SViewConstantsBuffer cbView = new SViewConstantsBuffer(); m_view = D3D11.Buffer.Create(m_d3d.m_device, D3D11.BindFlags.ConstantBuffer, ref cbView); RecreateViewConstants(); }
internal Engine_Mesh(Engine_MeshInfo _obj) { #region //Get Instance of DirectX m_d3d = Engine_Renderer.Instance; #endregion #region //Set Variables m_vertexCount = _obj.vertices.Count(); m_vertexStride = SharpDX.Utilities.SizeOf <Engine_Vertex>(); m_indexCount = _obj.indices.Count(); m_indexStride = sizeof(int); #endregion #region //Create VertexBuffer unsafe { fixed(Engine_Vertex *p = _obj.vertices.ToArray()) //Array { IntPtr ptr = (IntPtr)p; m_vertexBuffer = new D3D11.Buffer( m_d3d.m_device, ptr, new D3D11.BufferDescription( m_vertexCount * m_vertexStride, //ByteWidth D3D11.BindFlags.VertexBuffer, D3D11.ResourceUsage.Default)); } } #endregion #region //Create IndexBuffer unsafe { fixed(ushort *p = _obj.indices.ToArray()) { IntPtr ptr = (IntPtr)p; m_indexBuffer = new D3D11.Buffer( m_d3d.m_device, ptr, new D3D11.BufferDescription( m_indexCount * m_indexStride, D3D11.BindFlags.IndexBuffer, D3D11.ResourceUsage.Default)); } } #endregion }
internal Engine_ImGui() { m_d3d = Engine_Renderer.Instance; var con = ImGui.CreateContext(); ImGui.SetCurrentContext(con); var fonts = ImGui.GetIO().Fonts; ImGui.GetIO().Fonts.AddFontDefault(); var io = ImGui.GetIO(); io.DisplaySize = m_d3d.m_swapChainPanel.ActualSize; io.DisplayFramebufferScale = Vector2.One; io.DeltaTime = (float)Engine_Time.m_watch.Elapsed.TotalSeconds; ImGui.StyleColorsDark(); RecreateFontDeviceTexture(); }
internal Engine_Main(SwapChainPanel _swapChainPanel, TextBlock _textBlock) { m_render = new Engine_Renderer(_swapChainPanel); m_input = new Engine_Input(); m_time = new Engine_Time(); m_scene = new Engine_Scene(); m_gui = new Engine_ImGui(); m_scene.Awake(); m_scene.Start(); Windows.UI.Xaml.Media.CompositionTarget.Rendering += (s, e) => { m_render.Clear(); m_input.Update(); m_scene.Update(); m_scene.LateUpdate(); m_input.LateUpdate(); m_time.Update(); m_render.SetSolid(); m_scene.Render(); m_render.SetWireframe(); m_scene.Render(); m_gui.Draw(); m_render.Present(); _textBlock.Text = m_time.m_profile; _textBlock.Text += "\n\n" + m_render.m_profile; _textBlock.Text += "\n\n" + m_scene.m_profile; }; }
internal Engine_Material(string _shaderFileName, string _imageFileName, bool _includeGeometryShader = false) { #region //Get Instances m_d3d = Engine_Renderer.Instance; #endregion #region //Create InputLayout var inputElements = new D3D11.InputElement[] { new D3D11.InputElement("POSITION", 0, DXGI.Format.R32G32B32_Float, 0, 0), new D3D11.InputElement("TEXCOORD", 0, DXGI.Format.R32G32_Float, D3D11.InputElement.AppendAligned, 0), new D3D11.InputElement("NORMAL", 0, DXGI.Format.R32G32B32_Float, D3D11.InputElement.AppendAligned, 0) }; #endregion #region //Create VertexShader CompilationResult vsResult; using (vsResult = ShaderBytecode.CompileFromFile(_shaderFileName, "VS", "vs_4_0", ShaderFlags.None)) { m_vertexShader = new D3D11.VertexShader(m_d3d.m_device, vsResult.Bytecode.Data); m_inputLayout = new D3D11.InputLayout(m_d3d.m_device, vsResult.Bytecode, inputElements); } #endregion #region //Create PixelShader using (var psResult = ShaderBytecode.CompileFromFile(_shaderFileName, "PS", "ps_4_0", ShaderFlags.None)) m_pixelShader = new D3D11.PixelShader(m_d3d.m_device, psResult.Bytecode.Data); #endregion #region //Create GeometryShader if (_includeGeometryShader) { using (var psResult = ShaderBytecode.CompileFromFile(_shaderFileName, "GS", "gs_4_0", ShaderFlags.None)) m_geometryShader = new D3D11.GeometryShader(m_d3d.m_device, psResult.Bytecode.Data); } #endregion #region //Create ConstantBuffers for Model SPerModelConstantBuffer cbModel = new SPerModelConstantBuffer(); D3D11.BufferDescription bufferDescription = new D3D11.BufferDescription { BindFlags = D3D11.BindFlags.ConstantBuffer, CpuAccessFlags = D3D11.CpuAccessFlags.Write, Usage = D3D11.ResourceUsage.Dynamic, }; m_model = D3D11.Buffer.Create(m_d3d.m_device, D3D11.BindFlags.ConstantBuffer, ref cbModel); #endregion #region //Create Texture and Sampler var texture = Engine_ImgLoader.CreateTexture2DFromBitmap(m_d3d.m_device, Engine_ImgLoader.LoadBitmap(new SharpDX.WIC.ImagingFactory2(), _imageFileName)); m_resourceView = new D3D11.ShaderResourceView(m_d3d.m_device, texture); D3D11.SamplerStateDescription samplerStateDescription = new D3D11.SamplerStateDescription { Filter = D3D11.Filter.Anisotropic, AddressU = D3D11.TextureAddressMode.Clamp, AddressV = D3D11.TextureAddressMode.Clamp, AddressW = D3D11.TextureAddressMode.Clamp, ComparisonFunction = D3D11.Comparison.Always, MaximumAnisotropy = 16, MinimumLod = 0, MaximumLod = float.MaxValue, }; m_sampler = new D3D11.SamplerState(m_d3d.m_device, samplerStateDescription); #endregion }