summaryrefslogtreecommitdiff
path: root/Runtime/Graphics/Device.h
diff options
context:
space:
mode:
Diffstat (limited to 'Runtime/Graphics/Device.h')
-rw-r--r--Runtime/Graphics/Device.h82
1 files changed, 82 insertions, 0 deletions
diff --git a/Runtime/Graphics/Device.h b/Runtime/Graphics/Device.h
new file mode 100644
index 0000000..4e02b72
--- /dev/null
+++ b/Runtime/Graphics/Device.h
@@ -0,0 +1,82 @@
+#ifndef DEVICE_H
+#define DEVICE_H
+
+#include "../Utilities/NonCopyable.h"
+#include "../Utilities/Type.h"
+#include "../Utilities/Assert.h"
+
+#include "Texture.h"
+#include "Color.h"
+#include "DeviceDefine.h"
+#include "VertexBuffer.h"
+
+struct DeviceSetting
+{
+ TextureFilter texFilter;
+ TextureWrap texWrap;
+};
+
+class Device : public NonCopyable
+{
+public:
+ Device();
+ ~Device();
+
+ void Initialize(DeviceSetting& setting);
+
+ void Enable(DeviceEnable enabled);
+ void Disable(DeviceEnable enabled);
+ void IsEnable(uint flag);
+
+ void SetDepthTest(DepthTest testing);
+ void SetCullFace(CullFace face);
+ void SetStencilMask(byte stencilMask);
+ void SetStencilOp(StencilOp op);
+
+ void SetAntiAliasing(int level = 0);
+
+ void Clear(int clearFlag);
+
+ void BeginFrame();
+ void EndFrame();
+ void PresentFrame();
+
+ GET(SharedVertexBuffer*, SharedVBO, m_SharedVBO);
+
+ GET_SET(Color, ClearColor, m_ClearColor);
+
+ GET_SET(TextureFilter, TextureFilter, m_TexFilter);
+ GET_SET(TextureWrap, TextureWrap, m_TexWrap);
+
+ inline bool IsInsideFrame();
+
+private:
+ uint m_EnableFlag;
+
+ // Global texture setting
+ TextureFilter m_TexFilter;
+ TextureWrap m_TexWrap;
+
+ Color m_ClearColor;
+
+ DepthTest m_DepthTest;
+ StencilTest m_StencilTest;
+ StencilOp m_StencilOp;
+ byte m_StencilMask;
+
+ SharedVertexBuffer m_SharedVBO;
+
+ bool m_IsInsideFrame;
+
+};
+
+extern Device g_Device;
+
+#define g_SharedVBO (*g_Device.GetSharedVBO())
+
+inline bool Device::IsInsideFrame()
+{
+ return m_IsInsideFrame;
+}
+
+#endif \ No newline at end of file