FCT
载入中...
搜索中...
未找到
ViewportState.h
浏览该文件的文档.
1//
2// Created by Administrator on 2025/3/23.
3//
7#ifndef VIEWPORT_H
8#define VIEWPORT_H
9namespace FCT
10{
11 class ViewportState;
13 {
14 public:
15 virtual ~ViewportStateBehaviour() = default;
16 virtual void viewport(Vec2 pos,Vec2 size) = 0;
17 virtual void depthRange(float minDepth, float maxDepth) = 0;
18 virtual void scissor(Vec2 pos,Vec2 size) = 0;
19 protected:
21
22 };
24 {
25 public:
30 void viewport(Vec2 pos,Vec2 size) override;
31 void depthRange(float minDepth, float maxDepth) override;
32 void scissor(Vec2 pos, Vec2 size) override;
33 private:
34
35 };
36
38 {
39 protected:
41 public:
48 {
50 depthRange(0.0f, 1.0f);
51 scissor(Vec2(0.0f, 0.0f), Vec2(800.0f, 600.0f));
52 m_viewportPosition = Vec2(0.0f, 0.0f);
53 m_viewportSize = Vec2(800.0f, 600.0f);
54 }
56 {
57 if (m_behaviour)
58 {
59 delete m_behaviour;
60 m_behaviour = nullptr;
61 }
62 }
63 virtual void create() = 0;
64 void viewport(Vec2 pos,Vec2 size)
65 {
66 m_behaviour->viewport(pos, size);
67 }
68 void depthRange(float minDepth, float maxDepth)
69 {
70 m_behaviour->depthRange(minDepth, maxDepth);
71 }
72 void scissor(Vec2 pos,Vec2 size)
73 {
74 m_behaviour->scissor(pos, size);
75 }
76 protected:
83 };
84
86 {
87 m_state->m_viewportPosition = pos;
88 m_state->m_viewportSize = size;
89 }
90 inline void SetParamViewportStateBehaviour::depthRange(float minDepth, float maxDepth)
91 {
92 m_state->m_minDepth = minDepth;
93 m_state->m_maxDepth = maxDepth;
94 }
96 {
97 m_state->m_scissorPosition = pos;
98 m_state->m_scissorSize = size;
99 }
100}
101#endif //VIEWPORT_H
SetParamViewportStateBehaviour(ViewportState *state)
void depthRange(float minDepth, float maxDepth) override
void viewport(Vec2 pos, Vec2 size) override
void scissor(Vec2 pos, Vec2 size) override
virtual ~ViewportStateBehaviour()=default
virtual void scissor(Vec2 pos, Vec2 size)=0
virtual void depthRange(float minDepth, float maxDepth)=0
virtual void viewport(Vec2 pos, Vec2 size)=0
PipelineResourceType getType() const override
ViewportStateBehaviour * m_behaviour
void viewport(Vec2 pos, Vec2 size)
virtual void create()=0
void scissor(Vec2 pos, Vec2 size)
void depthRange(float minDepth, float maxDepth)
friend class SetParamViewportStateBehaviour