Added pixelformat parameter to DepthStencilTarget-constructor

This commit is contained in:
Simon Lübeß
2021-06-02 16:51:25 +02:00
parent bf94f10a64
commit dc088dcb0a
2 changed files with 31 additions and 2 deletions
@@ -3,6 +3,24 @@ using internal GlitchyEngine.Renderer;
namespace GlitchyEngine.Renderer namespace GlitchyEngine.Renderer
{ {
extension DepthStencilFormat
{
public static explicit operator Format(Self self)
{
switch(self)
{
case .D16_UNorm:
return .D16_UNorm;
case .D24_UNorm_S8_UInt:
return .D24_UNorm_S8_UInt;
case .D32_Float:
return .D32_Float;
case .D32_Float_S8X24_UInt:
return .D32_Float_S8X24_UInt;
}
}
}
extension DepthStencilTarget extension DepthStencilTarget
{ {
internal ID3D11DepthStencilView* nativeView ~ _?.Release(); internal ID3D11DepthStencilView* nativeView ~ _?.Release();
@@ -10,7 +28,7 @@ namespace GlitchyEngine.Renderer
protected override void PlatformCreate() protected override void PlatformCreate()
{ {
Texture2DDescription desc = .(); Texture2DDescription desc = .();
desc.Format = .D32_Float; desc.Format = (.)_format;
desc.ArraySize = 1; desc.ArraySize = 1;
desc.BindFlags = .DepthStencil; desc.BindFlags = .DepthStencil;
desc.Width = _width; desc.Width = _width;
@@ -1,21 +1,32 @@
using System; using System;
namespace GlitchyEngine.Renderer namespace GlitchyEngine.Renderer
{ {
public enum DepthStencilFormat
{
D16_UNorm,
D24_UNorm_S8_UInt,
D32_Float,
D32_Float_S8X24_UInt
}
// TODO: add all features. // TODO: add all features.
public class DepthStencilTarget : RefCounted public class DepthStencilTarget : RefCounted
{ {
protected internal GraphicsContext _context ~ _?.ReleaseRef(); protected internal GraphicsContext _context ~ _?.ReleaseRef();
protected uint32 _width, _height; protected uint32 _width, _height;
protected DepthStencilFormat _format;
public uint32 Width => _width; public uint32 Width => _width;
public uint32 Height => _height; public uint32 Height => _height;
public DepthStencilFormat Format => _format;
public this(GraphicsContext context, uint32 width, uint32 height) public this(GraphicsContext context, uint32 width, uint32 height, DepthStencilFormat format = .D32_Float)
{ {
_context = context..AddRef(); _context = context..AddRef();
_width = width; _width = width;
_height = height; _height = height;
_format = format;
PlatformCreate(); PlatformCreate();
} }