Files
FlaxEngine/Source/Engine/GraphicsDevice/DirectX/DX11/GPUPipelineStateDX11.h
2024-11-20 09:46:10 +01:00

59 lines
1.4 KiB
C++

// Copyright (c) 2012-2024 Wojciech Figat. All rights reserved.
#pragma once
#include "Engine/Graphics/GPUPipelineState.h"
#include "GPUShaderProgramDX11.h"
#include "GPUDeviceDX11.h"
#if GRAPHICS_API_DIRECTX11
/// <summary>
/// Graphics pipeline state object for DirectX 11 backend.
/// </summary>
class GPUPipelineStateDX11 : public GPUResourceDX11<GPUPipelineState>
{
public:
int32 RasterizerStateIndex;
ID3D11DepthStencilState* DepthStencilState = nullptr;
ID3D11BlendState* BlendState = nullptr;
GPUShaderProgramVSDX11* VS = nullptr;
#if GPU_ALLOW_TESSELLATION_SHADERS
GPUShaderProgramHSDX11* HS = nullptr;
GPUShaderProgramDSDX11* DS = nullptr;
#endif
#if GPU_ALLOW_GEOMETRY_SHADERS
GPUShaderProgramGSDX11* GS = nullptr;
#endif
GPUShaderProgramPSDX11* PS = nullptr;
D3D11_PRIMITIVE_TOPOLOGY PrimitiveTopology;
public:
/// <summary>
/// Initializes a new instance of the <see cref="GPUPipelineStateDX11"/> class.
/// </summary>
/// <param name="device">The device.</param>
GPUPipelineStateDX11(GPUDeviceDX11* device)
: GPUResourceDX11<GPUPipelineState>(device, StringView::Empty)
{
}
public:
// [GPUResourceDX11]
ID3D11Resource* GetResource() final override;
// [GPUPipelineState]
bool IsValid() const override;
bool Init(const Description& desc) override;
protected:
// [GPUResourceDX11]
void OnReleaseGPU() final override;
};
#endif