public override void DrawBuffer(VertexBufferBase vb, MpGe.Effect.EffectBase eb) { var eff = eb as Effect.Effect; Buffer.VertexBufferDX12 buf = vb as Buffer.VertexBufferDX12; var list = eff.commandList; // list.SetRenderTargets(rtvHandle, null); CommandList.PipelineState = eff.pipelineState; CommandList.SetDescriptorHeaps(eff._descriptorHeaps.Length, eff._descriptorHeaps); CommandList.SetGraphicsRootSignature(eff.Root); CommandList.SetVertexBuffer(0, buf.vertexBufferView); CommandList.SetIndexBuffer(buf.indexBufferView); CommandList.PrimitiveTopology = SharpDX.Direct3D.PrimitiveTopology.TriangleList; CommandList.SetGraphicsRootDescriptorTable(0, eff._cbvHeap.GPUDescriptorHandleForHeapStart); CommandList.DrawIndexedInstanced(buf.IndexCount, 1, 0, 0, 0); //CommandQueue.ExecuteCommandList(CommandList); //FlushCommandQueue(); }
public override void RectTex(float x, float y, float w, float h, MpGe.Texture.Texture2DBase tex) { var t2 = tex as Texture.Texture2D; // vb.commandList = FXSimple2D.commandList; //vb2.commandList = FXSimple2D.commandList; verts = new[] { new Vertex() { Position = new Vector3(x, y, 0.0f), UV = new Vector2(0.0f, 0.0f) }, new Vertex() { Position = new Vector3(x + w, y, 0.0f), UV = new Vector2(1.0f, 0) }, new Vertex() { Position = new Vector3(x + w, y + h, 0.0f), UV = new Vector2(1.0f, 1.0f) }, new Vertex() { Position = new Vector3(x, y + h, 0.0f), UV = new Vector2(0, 1) } }; vb = new Buffer.VertexBufferDX12(verts, indices, 0, 0); //t2.SetHeap(); FXTextured2D._descriptorHeaps = new[] { FXTextured2D._cbvHeap }; // FXSimple2D.BeginRen(); Effect.Simple2DConst s2 = new Effect.Simple2DConst { Proj = SharpDX.Matrix.OrthoOffCenterLH(0, 800, 600, 0, 0, 1) }; // FXSimple2D.cbuf.CopyData(0, ref s2); FXTextured2D.cbuf.CopyData(0, ref s2); DXGlobal.Display.DrawBuffer(vb, FXTextured2D); // DXGlobal.Display.DrawBuffer(vb2,FXSimple2D); // FXSimple2D.EndRen(); }
public override void Init() { //return; FXTextured2D = Effect.CreateEffect.CreateTextured2D(); // FXSimple2D = Effect.CreateEffect.CreateSimple2D(); float x = 20, y = 20, w = 100, h = 100; verts = new[] { new Vertex() { Position = new Vector3(x, y, 0.0f), UV = new Vector2(0.0f, 0.0f) }, new Vertex() { Position = new Vector3(x + w, y, 0.0f), UV = new Vector2(1.0f, 0) }, new Vertex() { Position = new Vector3(x + w, y + h, 0.0f), UV = new Vector2(1.0f, 1.0f) }, new Vertex() { Position = new Vector3(x, y + h, 0.0f), UV = new Vector2(0, 1) } }; short[] ind = { 0, 1, 2, 2, 3, 0 }; indices = ind; vb = new Buffer.VertexBufferDX12(verts, indices, 0, 0); // vb2 = new Buffer.VertexBufferDX12(verts2, 0, 0); // FXSimple2D.commandList.Close(); }
public override void Rect(float x, float y, float w, float h) { vb.commandList = FXSimple2D.commandList; //vb2.commandList = FXSimple2D.commandList; verts = new[] { new Vertex() { Position = new Vector3(x, y, 0.0f), UV = new Vector2(0.0f, 0.0f) }, new Vertex() { Position = new Vector3(x + w, y, 0.0f), UV = new Vector2(1.0f, 0) }, new Vertex() { Position = new Vector3(x + w, y + h, 0.0f), UV = new Vector2(1.0f, 1.0f) }, new Vertex() { Position = new Vector3(x, y + h, 0.0f), UV = new Vector2(0, 1) } }; vb = new Buffer.VertexBufferDX12(verts, indices, 0, 0); FXSimple2D.BeginRen(); Effect.Simple2DConst s2 = new Effect.Simple2DConst { Proj = SharpDX.Matrix.OrthoOffCenterLH(0, 800, 600, 0, 0, 1) }; FXSimple2D.cbuf.CopyData(0, ref s2); DXGlobal.Display.DrawBuffer(vb, FXSimple2D); // DXGlobal.Display.DrawBuffer(vb2,FXSimple2D); FXSimple2D.EndRen(); Console.WriteLine("Drawing!"); }