OpenBarnyard
 
Loading...
Searching...
No Matches
TShader.h
Go to the documentation of this file.
1
11
12#pragma once
13#include "TOrderTable.h"
14
16
17class TShader : public TObject
18{
19public:
21
22public:
23 using State = TUINT32;
30
32 {
33 public:
35 : m_pRoot( TNULL ) {}
36
37 void AddShader( TShader* pShader );
38 void RemoveShader( TShader* pShader );
39
40 TShader* GetRootShader() { return m_pRoot; }
41
42 private:
43 TShader* m_pRoot;
44 };
45
46public:
47 TShader();
48 ~TShader();
49
50 //-----------------------------------------------------------------------------
51 // Own methods
52 //-----------------------------------------------------------------------------
53
54 /* Called before shader is destroyed. */
55 virtual void OnDestroy();
56
57 /* Additional call to flush something more? */
58 virtual void Flush();
59
60 /* Setup render state before rendering meshes. */
61 virtual void StartFlush() = 0;
62
63 /* Restore render states after all rendering is done. */
64 virtual void EndFlush() = 0;
65
66 /* Do some initial setups, f.e. create order tables. */
67 virtual TBOOL Create();
68
69 /* Make sure the shader is ready to use. */
70 virtual TBOOL Validate();
71
72 /* We don't need the shader, at least for now. */
73 virtual void Invalidate();
74
75 /* Why? I don't know */
76 virtual TBOOL TryInvalidate() { return TTRUE; }
77
78 /* Why? I don't know */
79 virtual TBOOL TryValidate() { return TTRUE; }
80
81 /* Renders the mesh stored in the render packet containing other useful info. */
82 virtual void Render( TRenderPacket* a_pRenderPacket ) = 0;
83
84 TBOOL IsCreated() const { return m_State & State_Created; }
85 TBOOL IsValidated() const { return m_State & State_Validated; }
86
87 TShader* GetNextShader() { return m_pNextShader; }
88
89public:
91
92private:
93 State m_State;
94 TShader* m_pNextShader;
95};
96
#define BITFLAG(x)
Definition Defines.h:10
#define TOSHI_NAMESPACE_START
Definition Defines.h:47
#define TOSHI_NAMESPACE_END
Definition Defines.h:50
#define TNULL
Definition Typedefs.h:23
uint32_t TUINT32
Definition Typedefs.h:13
#define TTRUE
Definition Typedefs.h:25
bool TBOOL
Definition Typedefs.h:6
~TShader()
Definition TShader.cpp:20
TShader * GetNextShader()
Definition TShader.h:87
TBOOL IsValidated() const
Definition TShader.h:85
virtual TBOOL Validate()
Definition TShader.cpp:40
virtual TBOOL Create()
Definition TShader.cpp:34
@ State_Created
Definition TShader.h:27
@ State_Validated
Definition TShader.h:28
@ State_None
Definition TShader.h:26
virtual void StartFlush()=0
virtual TBOOL TryValidate()
Definition TShader.h:79
static TShaderList sm_oShaderList
Definition TShader.h:90
virtual void Render(TRenderPacket *a_pRenderPacket)=0
TUINT32 State
Definition TShader.h:23
virtual TBOOL TryInvalidate()
Definition TShader.h:76
virtual void EndFlush()=0
TBOOL IsCreated() const
Definition TShader.h:84
TDECLARE_CLASS(TShader, TObject)
virtual void OnDestroy()
Definition TShader.cpp:25
virtual void Flush()
Definition TShader.cpp:30
virtual void Invalidate()
Definition TShader.cpp:46
TShader()
Definition TShader.cpp:14
void RemoveShader(TShader *pShader)
Definition TShader.cpp:66
void AddShader(TShader *pShader)
Definition TShader.cpp:51
TShader * GetRootShader()
Definition TShader.h:40