mirror of
https://github.com/aharabada/glitchy-engine-beef.git
synced 2026-09-05 13:01:52 +00:00
Added SetViewport to GraphicsContext, removed Dx11Cheater, cleanup
This commit is contained in:
@@ -1,6 +1,5 @@
|
|||||||
using System;
|
using System;
|
||||||
using GlitchyEngine.Events;
|
using GlitchyEngine.Events;
|
||||||
using GlitchyEngine.Platform.DX11;
|
|
||||||
using GlitchyEngine.ImGui;
|
using GlitchyEngine.ImGui;
|
||||||
using GlitchyEngine.Math;
|
using GlitchyEngine.Math;
|
||||||
using DirectX.D3D11;
|
using DirectX.D3D11;
|
||||||
@@ -97,7 +96,7 @@ namespace GlitchyEngine
|
|||||||
Runtime.FatalError("Failed to compile Vertex Shader");
|
Runtime.FatalError("Failed to compile Vertex Shader");
|
||||||
}
|
}
|
||||||
|
|
||||||
result = Dx11Cheater.Device.CreateVertexShader(vsCode.GetBufferPointer(), vsCode.GetBufferSize(), null, &_vertexShader);
|
result = Window.Context.[Friend]nativeDevice.CreateVertexShader(vsCode.GetBufferPointer(), vsCode.GetBufferSize(), null, &_vertexShader);
|
||||||
|
|
||||||
if(result.Failed)
|
if(result.Failed)
|
||||||
{
|
{
|
||||||
@@ -112,7 +111,7 @@ namespace GlitchyEngine
|
|||||||
InputElementDescription("COLOR", 0, .R8G8B8A8_UNorm, 0)
|
InputElementDescription("COLOR", 0, .R8G8B8A8_UNorm, 0)
|
||||||
);
|
);
|
||||||
|
|
||||||
result = Dx11Cheater.Device.CreateInputLayout(&elementDescs, (.)elementDescs.Count, vsCode.GetBufferPointer(), vsCode.GetBufferSize(), &_inputLayout);
|
result = Window.Context.[Friend]nativeDevice.CreateInputLayout(&elementDescs, (.)elementDescs.Count, vsCode.GetBufferPointer(), vsCode.GetBufferSize(), &_inputLayout);
|
||||||
|
|
||||||
vsCode.Release();
|
vsCode.Release();
|
||||||
|
|
||||||
@@ -137,7 +136,7 @@ namespace GlitchyEngine
|
|||||||
Runtime.FatalError("Failed to compile Pixel Shader");
|
Runtime.FatalError("Failed to compile Pixel Shader");
|
||||||
}
|
}
|
||||||
|
|
||||||
result = Dx11Cheater.Device.CreatePixelShader(psCode.GetBufferPointer(), psCode.GetBufferSize(), null, &_pixelShader);
|
result = Window.Context.[Friend]nativeDevice.CreatePixelShader(psCode.GetBufferPointer(), psCode.GetBufferSize(), null, &_pixelShader);
|
||||||
|
|
||||||
psCode.Release();
|
psCode.Release();
|
||||||
|
|
||||||
@@ -217,7 +216,7 @@ namespace GlitchyEngine
|
|||||||
Window.Context.SetVertexBuffer(0, _vertexBuffer);
|
Window.Context.SetVertexBuffer(0, _vertexBuffer);
|
||||||
Window.Context.SetIndexBuffer(_indexBuffer);
|
Window.Context.SetIndexBuffer(_indexBuffer);
|
||||||
|
|
||||||
var _immediateContext = Dx11Cheater.ImmediateContext;
|
var _immediateContext = Window.Context.[Friend]nativeContext;
|
||||||
|
|
||||||
_immediateContext.InputAssembler.SetInputLayout(_inputLayout);
|
_immediateContext.InputAssembler.SetInputLayout(_inputLayout);
|
||||||
_immediateContext.InputAssembler.SetPrimitiveTopology(.TriangleList);
|
_immediateContext.InputAssembler.SetPrimitiveTopology(.TriangleList);
|
||||||
@@ -226,7 +225,7 @@ namespace GlitchyEngine
|
|||||||
|
|
||||||
Window.Context.SetRasterizerState(_rasterizerState);
|
Window.Context.SetRasterizerState(_rasterizerState);
|
||||||
|
|
||||||
_immediateContext.Rasterizer.SetViewports(1, &Dx11Cheater.BackbufferViewport);
|
Window.Context.SetViewport(Window.Context.SwapChain.BackbufferViewport);
|
||||||
|
|
||||||
_immediateContext.PixelShader.SetShader(_pixelShader, null, 0);
|
_immediateContext.PixelShader.SetShader(_pixelShader, null, 0);
|
||||||
|
|
||||||
|
|||||||
@@ -2,10 +2,6 @@ using System;
|
|||||||
using ImGui;
|
using ImGui;
|
||||||
using GlitchyEngine.Events;
|
using GlitchyEngine.Events;
|
||||||
|
|
||||||
// Temporary
|
|
||||||
using GlitchyEngine.Platform.DX11;
|
|
||||||
//using GlitchyEngine.Platform.DX11.Renderer;
|
|
||||||
|
|
||||||
namespace GlitchyEngine.ImGui
|
namespace GlitchyEngine.ImGui
|
||||||
{
|
{
|
||||||
public class ImGuiLayer : Layer
|
public class ImGuiLayer : Layer
|
||||||
|
|||||||
@@ -1,17 +0,0 @@
|
|||||||
using DirectX.D3D11;
|
|
||||||
using DirectX.DXGI;
|
|
||||||
|
|
||||||
namespace GlitchyEngine.Platform.DX11
|
|
||||||
{
|
|
||||||
public static class Dx11Cheater
|
|
||||||
{
|
|
||||||
public static ID3D11Device* Device;
|
|
||||||
public static ID3D11DeviceContext* ImmediateContext;
|
|
||||||
|
|
||||||
public static ID3D11DeviceContext* Context => ImmediateContext;
|
|
||||||
|
|
||||||
public static IDXGISwapChain* SwapChain;
|
|
||||||
public static ID3D11RenderTargetView* BackbufferTarget;
|
|
||||||
public static Viewport BackbufferViewport;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -7,19 +7,13 @@ using DirectX.DXGI.DXGI1_2;
|
|||||||
using GlitchyEngine.Renderer;
|
using GlitchyEngine.Renderer;
|
||||||
using GlitchyEngine.Math;
|
using GlitchyEngine.Math;
|
||||||
|
|
||||||
using GlitchyEngine.Platform.DX11;
|
|
||||||
|
|
||||||
using internal GlitchyEngine.Renderer;
|
using internal GlitchyEngine.Renderer;
|
||||||
//using internal GlitchyEngine.Platform.DX11.Renderer;
|
|
||||||
|
|
||||||
namespace GlitchyEngine.Renderer
|
namespace GlitchyEngine.Renderer
|
||||||
//namespace GlitchyEngine.Platform.DX11.Renderer
|
|
||||||
{
|
{
|
||||||
/// DirectX 11 specific implementation of the GraphicsContext
|
/// DirectX 11 specific implementation of the GraphicsContext
|
||||||
extension GraphicsContext
|
extension GraphicsContext
|
||||||
//public class Dx11Context : GraphicsContext
|
|
||||||
{
|
{
|
||||||
//private Dx11SwapChain _swapChain;
|
|
||||||
private SwapChain _swapChain;
|
private SwapChain _swapChain;
|
||||||
|
|
||||||
internal Windows.HWnd nativeWindowHandle;
|
internal Windows.HWnd nativeWindowHandle;
|
||||||
@@ -40,7 +34,6 @@ namespace GlitchyEngine.Renderer
|
|||||||
nativeWindowHandle = windowHandle;
|
nativeWindowHandle = windowHandle;
|
||||||
|
|
||||||
_swapChain = new SwapChain(this);
|
_swapChain = new SwapChain(this);
|
||||||
//_swapChain = new Dx11SwapChain(this);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public ~this()
|
public ~this()
|
||||||
@@ -94,9 +87,6 @@ namespace GlitchyEngine.Renderer
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
Dx11Cheater.Device = nativeDevice;
|
|
||||||
Dx11Cheater.ImmediateContext = nativeContext;
|
|
||||||
|
|
||||||
Log.EngineLogger.Trace("D3D11 Device and Context created (Feature level: {})", deviceLevel);
|
Log.EngineLogger.Trace("D3D11 Device and Context created (Feature level: {})", deviceLevel);
|
||||||
}
|
}
|
||||||
@@ -110,7 +100,6 @@ namespace GlitchyEngine.Renderer
|
|||||||
if(renderTarget == null)
|
if(renderTarget == null)
|
||||||
{
|
{
|
||||||
_renderTargets[slot] = _swapChain.nativeBackBufferTarget;
|
_renderTargets[slot] = _swapChain.nativeBackBufferTarget;
|
||||||
//_immediateContext.OutputMerger.SetRenderTargets(1, &_swapChain._backBufferTarget, null);
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@@ -161,5 +150,10 @@ namespace GlitchyEngine.Renderer
|
|||||||
{
|
{
|
||||||
nativeContext.Rasterizer.SetState(_currentRasterizerState.nativeRasterizerState);
|
nativeContext.Rasterizer.SetState(_currentRasterizerState.nativeRasterizerState);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public override void SetViewports(uint32 viewportsCount, GlitchyEngine.Renderer.Viewport* viewports)
|
||||||
|
{
|
||||||
|
nativeContext.Rasterizer.SetViewports(viewportsCount, (.)viewports);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,6 +1,5 @@
|
|||||||
using DirectX.D3D11;
|
using DirectX.D3D11;
|
||||||
using DirectX.DXGI.DXGI1_2;
|
using DirectX.DXGI.DXGI1_2;
|
||||||
using GlitchyEngine.Platform.DX11;
|
|
||||||
using System.Diagnostics;
|
using System.Diagnostics;
|
||||||
|
|
||||||
using internal GlitchyEngine.Renderer;
|
using internal GlitchyEngine.Renderer;
|
||||||
@@ -19,7 +18,6 @@ namespace GlitchyEngine.Renderer
|
|||||||
internal IDXGISwapChain1* nativeSwapChain;
|
internal IDXGISwapChain1* nativeSwapChain;
|
||||||
|
|
||||||
internal ID3D11RenderTargetView* nativeBackBufferTarget;
|
internal ID3D11RenderTargetView* nativeBackBufferTarget;
|
||||||
private DirectX.D3D11.Viewport _backBufferViewport;
|
|
||||||
|
|
||||||
public override uint32 Width
|
public override uint32 Width
|
||||||
{
|
{
|
||||||
@@ -51,7 +49,6 @@ namespace GlitchyEngine.Renderer
|
|||||||
|
|
||||||
public override GraphicsContext Context => _context;
|
public override GraphicsContext Context => _context;
|
||||||
|
|
||||||
//public this(Dx11Context context)
|
|
||||||
public this(GraphicsContext context)
|
public this(GraphicsContext context)
|
||||||
{
|
{
|
||||||
_context = context;
|
_context = context;
|
||||||
@@ -129,8 +126,6 @@ namespace GlitchyEngine.Renderer
|
|||||||
Debug.Assert(createResult.Succeeded, scope $"Failed to create swap chain. Message({(int32)createResult}):{createResult}");
|
Debug.Assert(createResult.Succeeded, scope $"Failed to create swap chain. Message({(int32)createResult}):{createResult}");
|
||||||
|
|
||||||
factory.Release();
|
factory.Release();
|
||||||
|
|
||||||
Dx11Cheater.SwapChain = nativeSwapChain;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
nativeSwapChain.GetBuffer<ID3D11Texture2D>(0, let backBuffer);
|
nativeSwapChain.GetBuffer<ID3D11Texture2D>(0, let backBuffer);
|
||||||
@@ -138,11 +133,7 @@ namespace GlitchyEngine.Renderer
|
|||||||
RenderTargetViewDescription rtvDesc = .(backBuffer, .Texture2D, backBufferViewFormat);
|
RenderTargetViewDescription rtvDesc = .(backBuffer, .Texture2D, backBufferViewFormat);
|
||||||
_context.nativeDevice.CreateRenderTargetView(backBuffer, &rtvDesc, &nativeBackBufferTarget);
|
_context.nativeDevice.CreateRenderTargetView(backBuffer, &rtvDesc, &nativeBackBufferTarget);
|
||||||
|
|
||||||
Dx11Cheater.BackbufferTarget = nativeBackBufferTarget;
|
_backBufferViewport = GlitchyEngine.Renderer.Viewport(0, 0, _width, _height, 0.0f, 1.0f);
|
||||||
|
|
||||||
_backBufferViewport = DirectX.D3D11.Viewport(0, 0, _width, _height, 0.0f, 1.0f);
|
|
||||||
|
|
||||||
Dx11Cheater.BackbufferViewport = _backBufferViewport;
|
|
||||||
|
|
||||||
backBuffer.Release();
|
backBuffer.Release();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -7,9 +7,7 @@ using DirectX.Windows.Kernel32;
|
|||||||
using DirectX.Windows.WindowMessages;
|
using DirectX.Windows.WindowMessages;
|
||||||
using GlitchyEngine.Events;
|
using GlitchyEngine.Events;
|
||||||
using System.Diagnostics;
|
using System.Diagnostics;
|
||||||
using GlitchyEngine.Platform.DX11;
|
|
||||||
using GlitchyEngine.Math;
|
using GlitchyEngine.Math;
|
||||||
//using GlitchyEngine.Platform.DX11.Renderer;
|
|
||||||
using GlitchyEngine.Renderer;
|
using GlitchyEngine.Renderer;
|
||||||
using static System.Windows;
|
using static System.Windows;
|
||||||
|
|
||||||
@@ -198,7 +196,6 @@ namespace GlitchyEngine
|
|||||||
_windowHandle = CreateWindowExW(.None, _windowClass.ClassName, desc.Title.ToScopedNativeWChar!(), .WS_OVERLAPPEDWINDOW | .WS_VISIBLE,
|
_windowHandle = CreateWindowExW(.None, _windowClass.ClassName, desc.Title.ToScopedNativeWChar!(), .WS_OVERLAPPEDWINDOW | .WS_VISIBLE,
|
||||||
CW_USEDEFAULT, CW_USEDEFAULT, desc.Width, desc.Height, 0, 0, (.)_instanceHandle, null);
|
CW_USEDEFAULT, CW_USEDEFAULT, desc.Width, desc.Height, 0, 0, (.)_instanceHandle, null);
|
||||||
|
|
||||||
//_graphicsContext = new Dx11Context(_windowHandle);
|
|
||||||
_graphicsContext = new GraphicsContext(_windowHandle);
|
_graphicsContext = new GraphicsContext(_windowHandle);
|
||||||
_graphicsContext.Init();
|
_graphicsContext.Init();
|
||||||
|
|
||||||
@@ -208,8 +205,6 @@ namespace GlitchyEngine
|
|||||||
LoadWindowRectangle();
|
LoadWindowRectangle();
|
||||||
|
|
||||||
Log.EngineLogger.Trace("Created window \"{}\" ({}, {})", Title, Width, Height);
|
Log.EngineLogger.Trace("Created window \"{}\" ({}, {})", Title, Width, Height);
|
||||||
|
|
||||||
//DirectX.Init(_windowHandle, (.)Width, (.)Height);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private bool _isResizingOrMoving;
|
private bool _isResizingOrMoving;
|
||||||
|
|||||||
@@ -1,15 +1,14 @@
|
|||||||
using GlitchyEngine.Math;
|
using GlitchyEngine.Math;
|
||||||
|
using System;
|
||||||
|
|
||||||
namespace GlitchyEngine.Renderer
|
namespace GlitchyEngine.Renderer
|
||||||
{
|
{
|
||||||
public class RenderTarget;
|
public class RenderTarget;
|
||||||
|
|
||||||
//public abstract class GraphicsContext
|
|
||||||
public class GraphicsContext
|
public class GraphicsContext
|
||||||
{
|
{
|
||||||
private RasterizerState _currentRasterizerState;
|
private RasterizerState _currentRasterizerState;
|
||||||
|
|
||||||
//public abstract SwapChain SwapChain {get;}
|
|
||||||
public extern SwapChain SwapChain {get;}
|
public extern SwapChain SwapChain {get;}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -17,7 +16,6 @@ namespace GlitchyEngine.Renderer
|
|||||||
*/
|
*/
|
||||||
//public static extern uint32 MaxRenderTargetCount();
|
//public static extern uint32 MaxRenderTargetCount();
|
||||||
|
|
||||||
//public abstract void Init();
|
|
||||||
public extern void Init();
|
public extern void Init();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -27,7 +25,6 @@ namespace GlitchyEngine.Renderer
|
|||||||
* @remarks When @RenderTarget is null the backbuffer will be bound.
|
* @remarks When @RenderTarget is null the backbuffer will be bound.
|
||||||
* @BindRenderTargets has to be called in order to bind the rendertargets.
|
* @BindRenderTargets has to be called in order to bind the rendertargets.
|
||||||
*/
|
*/
|
||||||
//public abstract void SetRenderTarget(RenderTarget renderTarget, int slot = 0);
|
|
||||||
public extern void SetRenderTarget(RenderTarget renderTarget, int slot = 0);
|
public extern void SetRenderTarget(RenderTarget renderTarget, int slot = 0);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -36,7 +33,6 @@ namespace GlitchyEngine.Renderer
|
|||||||
* @param slot The slot to which the rendertarget will be bound.
|
* @param slot The slot to which the rendertarget will be bound.
|
||||||
* @remarks When @RenderTarget is null the backbuffer will be bound.
|
* @remarks When @RenderTarget is null the backbuffer will be bound.
|
||||||
*/
|
*/
|
||||||
//public abstract void BindRenderTargets(); // Todo: maybe do this automatically when a drawcall is issued
|
|
||||||
public extern void BindRenderTargets(); // Todo: maybe do this automatically when a drawcall is issued
|
public extern void BindRenderTargets(); // Todo: maybe do this automatically when a drawcall is issued
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -45,7 +41,6 @@ namespace GlitchyEngine.Renderer
|
|||||||
* @param color The color to clear the render target with.
|
* @param color The color to clear the render target with.
|
||||||
* @remarks When @renderTarget is null the backbuffer will be cleared.
|
* @remarks When @renderTarget is null the backbuffer will be cleared.
|
||||||
*/
|
*/
|
||||||
//public abstract void ClearRenderTarget(RenderTarget renderTarget, ColorRGBA color);
|
|
||||||
public extern void ClearRenderTarget(RenderTarget renderTarget, ColorRGBA color);
|
public extern void ClearRenderTarget(RenderTarget renderTarget, ColorRGBA color);
|
||||||
|
|
||||||
//public abstract void SetViewport(Viewport viewport);
|
//public abstract void SetViewport(Viewport viewport);
|
||||||
@@ -91,5 +86,27 @@ namespace GlitchyEngine.Renderer
|
|||||||
{
|
{
|
||||||
return _currentRasterizerState;
|
return _currentRasterizerState;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
[Inline]
|
||||||
|
public void SetViewport(Viewport viewport)
|
||||||
|
{
|
||||||
|
var viewport;
|
||||||
|
SetViewports(1, &viewport);
|
||||||
|
}
|
||||||
|
|
||||||
|
[Inline]
|
||||||
|
public void SetViewports(Viewport[] viewports)
|
||||||
|
{
|
||||||
|
SetViewports((.)viewports.Count, viewports.CArray());
|
||||||
|
}
|
||||||
|
|
||||||
|
[Inline]
|
||||||
|
public void SetViewports<CSize>(Viewport[CSize] viewports) where CSize : const int
|
||||||
|
{
|
||||||
|
var viewports;
|
||||||
|
SetViewports(CSize, &viewports);
|
||||||
|
}
|
||||||
|
|
||||||
|
public extern void SetViewports(uint32 viewportsLength, Viewport* viewports);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -2,6 +2,8 @@ namespace GlitchyEngine.Renderer
|
|||||||
{
|
{
|
||||||
public class SwapChain
|
public class SwapChain
|
||||||
{
|
{
|
||||||
|
private Viewport _backBufferViewport;
|
||||||
|
|
||||||
public extern GraphicsContext Context {get;}
|
public extern GraphicsContext Context {get;}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -15,6 +17,8 @@ namespace GlitchyEngine.Renderer
|
|||||||
*/
|
*/
|
||||||
public extern uint32 Height {get; set;}
|
public extern uint32 Height {get; set;}
|
||||||
|
|
||||||
|
public Viewport BackbufferViewport => _backBufferViewport;
|
||||||
|
|
||||||
public extern void Init();
|
public extern void Init();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
Reference in New Issue
Block a user