some state tweaks

pull/14/head
cosmonaut 2021-02-08 18:10:02 -08:00
parent 29a86c2040
commit 4eb2cb6b09
3 changed files with 29 additions and 42 deletions

View File

@ -253,7 +253,8 @@ namespace MoonWorks.Graphics
RGA = R | G | A, RGA = R | G | A,
GBA = G | B | A, GBA = G | B | A,
RGBA = R | G | B | A RGBA = R | G | B | A,
None = 0
} }
public enum ShaderStageType public enum ShaderStageType

View File

@ -10,7 +10,7 @@ namespace MoonWorks.Graphics
protected override Action<IntPtr, IntPtr> QueueDestroyFunction => Refresh.Refresh_QueueDestroyRenderTarget; protected override Action<IntPtr, IntPtr> QueueDestroyFunction => Refresh.Refresh_QueueDestroyRenderTarget;
public static RenderTarget CreateBackedColorTarget2D( public static RenderTarget CreateBackedRenderTarget(
GraphicsDevice device, GraphicsDevice device,
uint width, uint width,
uint height, uint height,
@ -18,10 +18,26 @@ namespace MoonWorks.Graphics
bool canBeSampled, bool canBeSampled,
SampleCount sampleCount = SampleCount.One, SampleCount sampleCount = SampleCount.One,
uint levelCount = 1 uint levelCount = 1
) ) {
{ TextureUsageFlags flags = 0;
var flags = TextureUsageFlags.ColorTarget;
if (canBeSampled) { flags |= TextureUsageFlags.Sampler; } if (
format == TextureFormat.D16 ||
format == TextureFormat.D32 ||
format == TextureFormat.D16S8 ||
format == TextureFormat.D32S8
) {
flags |= TextureUsageFlags.DepthStencilTarget;
}
else
{
flags |= TextureUsageFlags.ColorTarget;
}
if (canBeSampled)
{
flags |= TextureUsageFlags.Sampler;
}
var texture = Texture.CreateTexture2D( var texture = Texture.CreateTexture2D(
device, device,
@ -36,42 +52,6 @@ namespace MoonWorks.Graphics
return new RenderTarget(device, new TextureSlice(texture), sampleCount); return new RenderTarget(device, new TextureSlice(texture), sampleCount);
} }
public static RenderTarget CreateDepthBuffer(
GraphicsDevice device,
uint width,
uint height
) {
var flags = TextureUsageFlags.DepthStencilTarget;
var texture = Texture.CreateTexture2D(
device,
width,
height,
TextureFormat.D32,
flags
);
return new RenderTarget(device, new TextureSlice(texture));
}
public static RenderTarget CreateDepthStencilBuffer(
GraphicsDevice device,
uint width,
uint height
) {
var flags = TextureUsageFlags.DepthStencilTarget;
var texture = Texture.CreateTexture2D(
device,
width,
height,
TextureFormat.D32S8,
flags
);
return new RenderTarget(device, new TextureSlice(texture));
}
public RenderTarget(GraphicsDevice device, in TextureSlice textureSlice, SampleCount sampleCount = SampleCount.One) : base(device) public RenderTarget(GraphicsDevice device, in TextureSlice textureSlice, SampleCount sampleCount = SampleCount.One) : base(device)
{ {
Handle = Refresh.Refresh_CreateRenderTarget( Handle = Refresh.Refresh_CreateRenderTarget(

View File

@ -67,6 +67,12 @@ namespace MoonWorks.Graphics
ColorWriteMask = ColorComponentFlags.RGBA ColorWriteMask = ColorComponentFlags.RGBA
}; };
public static readonly ColorTargetBlendState Disable = new ColorTargetBlendState
{
BlendEnable = false,
ColorWriteMask = ColorComponentFlags.None
};
public Refresh.ColorTargetBlendState ToRefreshColorTargetBlendState() public Refresh.ColorTargetBlendState ToRefreshColorTargetBlendState()
{ {
return new Refresh.ColorTargetBlendState return new Refresh.ColorTargetBlendState