mirror of
https://github.com/aharabada/glitchy-engine-beef.git
synced 2026-09-05 21:01:52 +00:00
Added RasterizerState
This commit is contained in:
@@ -155,5 +155,10 @@ namespace GlitchyEngine.Renderer
|
||||
{
|
||||
nativeContext.InputAssembler.SetIndexBuffer(buffer.nativeBuffer, indexFormat == .Index32Bit ? .R32_UInt : .R16_UInt, byteOffset);
|
||||
}
|
||||
|
||||
protected override void SetRasterizerStateImpl()
|
||||
{
|
||||
nativeContext.Rasterizer.SetState(_currentRasterizerState.nativeRasterizerState);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,63 @@
|
||||
using DirectX.D3D11;
|
||||
|
||||
using internal GlitchyEngine.Renderer;
|
||||
|
||||
namespace GlitchyEngine.Renderer
|
||||
{
|
||||
extension FillMode
|
||||
{
|
||||
public static explicit operator DirectX.D3D11.FillMode(Self fm) => fm == .Solid ? .Solid : .Wireframe;
|
||||
}
|
||||
|
||||
extension CullMode
|
||||
{
|
||||
public static explicit operator DirectX.D3D11.CullMode(Self cm)
|
||||
{
|
||||
if(cm == .None)
|
||||
return .None;
|
||||
|
||||
if(cm == .Front)
|
||||
return .Front;
|
||||
|
||||
return .Back;
|
||||
}
|
||||
}
|
||||
|
||||
extension RasterizerStateDescription
|
||||
{
|
||||
public static explicit operator DirectX.D3D11.RasterizerStateDescription(Self description)
|
||||
{
|
||||
DirectX.D3D11.RasterizerStateDescription result = .();
|
||||
result.FillMode = (.)description.FillMode;
|
||||
result.CullMode = (.)description.CullMode;
|
||||
result.FrontCounterClockwise = description.FrontCounterClockwise;
|
||||
result.DepthBias = description.DepthBias;
|
||||
result.DepthBiasClamp = description.DepthBiasClamp;
|
||||
result.SlopeScaledDepthBias = description.SlopeScaledDepthBias;
|
||||
result.DepthClipEnable = description.DepthClipEnabled;
|
||||
result.ScissorEnable = description.ScissorEnabled;
|
||||
result.MultisampleEnable = description.MultisampleEnabled;
|
||||
result.AntialiasedLineEnable = description.AntialiasedLineEnabled;
|
||||
|
||||
return result;
|
||||
}
|
||||
}
|
||||
|
||||
extension RasterizerState
|
||||
{
|
||||
internal DirectX.D3D11.RasterizerStateDescription nativeDescription;
|
||||
internal ID3D11RasterizerState* nativeRasterizerState ~ _?.Release();
|
||||
|
||||
public override this(GraphicsContext context, GlitchyEngine.Renderer.RasterizerStateDescription description) : this(context)
|
||||
{
|
||||
_description = description;
|
||||
nativeDescription = (.)_description;
|
||||
|
||||
var result = context.nativeDevice.CreateRasterizerState(ref nativeDescription, &nativeRasterizerState);
|
||||
if(result.Failed)
|
||||
{
|
||||
Log.EngineLogger.Error("Failed to create rasterizer state. Message({}): {}", (int)result, result);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user