FCT
载入中...
搜索中...
未找到
VK_DepthStencilState.cpp
浏览该文件的文档.
1//
2// Created by Administrator on 2025/3/23.
3//
4
5#include "../FCTAPI.h"
6
7namespace FCT {
8 namespace RHI
9 {
14
16 {
19
20 m_createInfo = vk::PipelineDepthStencilStateCreateInfo()
21 .setDepthTestEnable(m_depthTestEnable)
22 .setDepthWriteEnable(m_depthWriteEnable)
23 .setDepthCompareOp(convertCompareOp(m_depthCompareOp))
24 .setDepthBoundsTestEnable(m_depthBoundsTestEnable)
25 .setStencilTestEnable(m_stencilTestEnable)
26 .setFront(m_frontStencilState)
27 .setBack(m_backStencilState)
28 .setMinDepthBounds(m_minDepthBounds)
29 .setMaxDepthBounds(m_maxDepthBounds);
30 }
31
33 {
34 switch (op)
35 {
36 case CompareOp::Never: return vk::CompareOp::eNever;
37 case CompareOp::Less: return vk::CompareOp::eLess;
38 case CompareOp::Equal: return vk::CompareOp::eEqual;
39 case CompareOp::LessOrEqual: return vk::CompareOp::eLessOrEqual;
40 case CompareOp::Greater: return vk::CompareOp::eGreater;
41 case CompareOp::NotEqual: return vk::CompareOp::eNotEqual;
42 case CompareOp::GreaterOrEqual: return vk::CompareOp::eGreaterOrEqual;
43 case CompareOp::Always: return vk::CompareOp::eAlways;
44 default: return vk::CompareOp::eAlways;
45 }
46 }
47
49 {
50 switch (op)
51 {
52 case StencilOp::Keep: return vk::StencilOp::eKeep;
53 case StencilOp::Zero: return vk::StencilOp::eZero;
54 case StencilOp::Replace: return vk::StencilOp::eReplace;
55 case StencilOp::IncrementClamp: return vk::StencilOp::eIncrementAndClamp;
56 case StencilOp::DecrementClamp: return vk::StencilOp::eDecrementAndClamp;
57 case StencilOp::Invert: return vk::StencilOp::eInvert;
58 case StencilOp::IncrementWrap: return vk::StencilOp::eIncrementAndWrap;
59 case StencilOp::DecrementWrap: return vk::StencilOp::eDecrementAndWrap;
60 default: return vk::StencilOp::eKeep;
61 }
62 }
63
64 vk::StencilOpState VK_DepthStencilState::convertStencilOpState(const StencilOpState& state) const
65 {
66 return vk::StencilOpState()
67 .setFailOp(convertStencilOp(state.failOp))
68 .setPassOp(convertStencilOp(state.passOp))
69 .setDepthFailOp(convertStencilOp(state.depthFailOp))
70 .setCompareOp(convertCompareOp(state.compareOp))
71 .setCompareMask(state.compareMask)
72 .setWriteMask(state.writeMask)
73 .setReference(state.reference);
74 }
75 }
76}
vk::StencilOpState convertStencilOpState(const StencilOpState &state) const
vk::CompareOp convertCompareOp(CompareOp op) const
vk::PipelineDepthStencilStateCreateInfo m_createInfo
vk::StencilOp convertStencilOp(StencilOp op) const