summaryrefslogtreecommitdiff
path: root/Runtime/Graphics/GfxDevice.h
diff options
context:
space:
mode:
authorchai <chaifix@163.com>2021-10-29 13:36:49 +0800
committerchai <chaifix@163.com>2021-10-29 13:36:49 +0800
commit91c32cb173201ac8803a1e4452e8342969b8e484 (patch)
tree5e78c485b5fcfcf839a2348667597d7e10476214 /Runtime/Graphics/GfxDevice.h
parent1f92d4c389cceba6f90261d9cb29885c8a3ca24c (diff)
*GLSL test
Diffstat (limited to 'Runtime/Graphics/GfxDevice.h')
-rw-r--r--Runtime/Graphics/GfxDevice.h33
1 files changed, 32 insertions, 1 deletions
diff --git a/Runtime/Graphics/GfxDevice.h b/Runtime/Graphics/GfxDevice.h
index 0931eae..ef7788c 100644
--- a/Runtime/Graphics/GfxDevice.h
+++ b/Runtime/Graphics/GfxDevice.h
@@ -4,6 +4,11 @@
#include "../Utilities/NonCopyable.h"
#include "../Utilities/Type.h"
#include "../Utilities/Assert.h"
+#include "../Graphics/Shader.h"
+#include "../Math/Vector2.h"
+#include "../Math/Vector3.h"
+#include "../Math/Vector4.h"
+#include "../Math/Matrix44.h"
#include "Texture.h"
#include "DeviceDefine.h"
@@ -17,6 +22,23 @@ struct GfxDeviceSetting
ETextureWrapMode wrapMode; // 默认的贴图平铺模式
};
+// 当前绑定的shader
+struct ShaderState
+{
+ LuaBind::StrongRef ref; // 在lua中的引用
+ Shader* shader;
+ operator bool()
+ {
+ return ref && shader != NULL;
+ }
+ GLuint GetID() {
+ if (shader == nullptr)
+ return 0;
+ GLint id = shader->GetID();
+ return id;
+ }
+};
+
// 对渲染相关API的封装
class GfxDevice : public NonCopyable
{
@@ -37,7 +59,14 @@ public:
void SetAntiAliasing(int level = 0);
- void Clear(int clearFlag);
+ void Clear(int clearFlag);
+
+ void UseShader(LuaBind::State& state, Shader* shader, int idx);
+ void UnuseShader();
+ void SetUniformVec2(const char* name, Internal::Vector2 vec2);
+ void SetUniformVec3(const char* name, Internal::Vector3 vec3);
+ void SetUniformVec4(const char* name, Internal::Vector4 vec4);
+ void SetUniformMat4(const char* name, Internal::Matrix44 mat4);
void BeginFrame();
void EndFrame();
@@ -62,6 +91,8 @@ private:
EStencilOp m_StencilOp;
byte m_StencilMask;
+ ShaderState m_Shader; // 当前绑定的shader
+
// 贴图默认设置
ETextureFilterMode m_DefaultFilterMode;
ETextureWrapMode m_DefaultWrapMode;