diff options
Diffstat (limited to 'source/modules/asura-core/graphics/gfx_device.h')
-rw-r--r-- | source/modules/asura-core/graphics/gfx_device.h | 139 |
1 files changed, 0 insertions, 139 deletions
diff --git a/source/modules/asura-core/graphics/gfx_device.h b/source/modules/asura-core/graphics/gfx_device.h deleted file mode 100644 index fa22dd4..0000000 --- a/source/modules/asura-core/graphics/gfx_device.h +++ /dev/null @@ -1,139 +0,0 @@ -#ifndef __ASURA_ENGINE_GFX_DEVICE_H__ -#define __ASURA_ENGINE_GFX_DEVICE_H__ - -#include <stack> - -#include <glad/glad.h> - -#include <asura-utils/scripting/portable.hpp> -#include <asura-utils/math/rect.hpp> -#include <asura-utils/math/matrix44.h> -#include <asura-utils/math/vector4.h> - -#include "color.h" -#include "matrix_stack.h" - -namespace_begin(AsuraEngine) -namespace_begin(Graphics) - -class Profiler; -class Shader; -class GPUBuffer; -class Canvas; - -enum MatrixMode -{ - MATRIX_MODE_PROJECTION = 0, - MATRIX_MODE_MODEL = 1, - MATRIX_MODE_VIEW = 2, -}; - -enum GLParams -{ - GL_PARAM_MAX_TEXTURE_UNIT = 1, -}; - -class GfxDevice : public AEScripting::Portable<GfxDevice> -{ -public: - - GfxDevice(); - ~GfxDevice(); - - static GfxDevice& Get(); - - int GetParam(GLParams param); - - bool Init(const AEMath::Recti& viewport); - bool Inited(); - - void SetViewport(const AEMath::Recti viewport); - - const AEMath::Recti& GetViewport(); - - void SetMatrixMode(MatrixMode mode); - MatrixMode GetMatrixMode(); - - void PushMatrix(); - void PopMatrix(); - - void LoadIdentity(); - void Rotate(float angle); - void Translate(float x, float y); - void Scale(float x, float y); - void Ortho(float l, float r, float b, float t, float n, float f); - - uint GetMatrixDepth(); - uint GetMatrixIndex(); - - AEMath::Matrix44& GetMatrix(MatrixMode mode); - AEMath::Matrix44 GetMVPMatrix(); - - void SetDrawColor(float r, float g, float b, float a); - Color& GetDrawColor(); - - void SetActiveCanvas(Canvas* = NULL); - Canvas* GetActiveCanvas() const; - - void SetActiveShader(Shader* = NULL); - Shader* GetActiveShader() const; - - void DrawArrays(GLenum mode, GLint first, GLsizei count); - - void WipeError(); - bool HasError(); - GLenum GetError(); - -private: - - friend class Profiler; - - struct - { - AEMath::Recti viewport; ///< ǰлHDC߱ڴСı߲ˢʱ䶯 - MatrixStack matrix[3]; ///< model, view, projection - MatrixMode matrixMode; ///< ǰľ - Color drawColor; ///< Ƶɫ - Canvas* canvas; ///< ǰcanvas - Shader* shader; ///< ǰʹõshader - } state; - -#if ASURA_GL_PROFILE - struct - { - uint drawCall; ///< ͳdrawcall - uint canvasSwitch; ///< лtextureĴ - uint shaderSwitch; ///< лshaderĴ - } stats; -#endif - -luaxport: - - LUAX_DECL_SINGLETON(GfxDevice); - - LUAX_DECL_ENUM(MatrixMode, 1); - LUAX_DECL_ENUM(GLParams, 1); - - LUAX_DECL_METHOD(_SetMatrixMode); - LUAX_DECL_METHOD(_GetMatrixMode); - LUAX_DECL_METHOD(_PushMatrix); - LUAX_DECL_METHOD(_PopMatrix); - LUAX_DECL_METHOD(_LoadIdentity); - LUAX_DECL_METHOD(_Rotate); - LUAX_DECL_METHOD(_Translate); - LUAX_DECL_METHOD(_Scale); - LUAX_DECL_METHOD(_Ortho); - LUAX_DECL_METHOD(_GetMatrixDepth); - LUAX_DECL_METHOD(_GetMatrixIndex); - LUAX_DECL_METHOD(_UseShader); - LUAX_DECL_METHOD(_UnuseShader); - -}; - -// ȫ GfxDevice -extern GfxDevice g_Device; - -namespace_end -namespace_end - -#endif
\ No newline at end of file |