From 70b82d1981c0de3c7b77670ff8abcfeb26815142 Mon Sep 17 00:00:00 2001 From: chai Date: Tue, 12 Mar 2019 00:39:26 +0800 Subject: *misc --- Source/Asura.Engine/Graphics/Shader.h | 53 +++++++++++++++++++---------------- 1 file changed, 29 insertions(+), 24 deletions(-) (limited to 'Source/Asura.Engine/Graphics/Shader.h') diff --git a/Source/Asura.Engine/Graphics/Shader.h b/Source/Asura.Engine/Graphics/Shader.h index 7dbfb0d..932cc42 100644 --- a/Source/Asura.Engine/Graphics/Shader.h +++ b/Source/Asura.Engine/Graphics/Shader.h @@ -11,7 +11,7 @@ #include "Math/Vector4.h" #include "Math/Matrix44.h" #include "StringMap.hpp" -#include "Object.h" +#include "Scripting/Portable.h" #include "Color.h" #include "Manager.hpp" #include "Texture.h" @@ -26,13 +26,16 @@ namespace AsuraEngine /// 一个shader是一个在材质间共享的程序。Shader本身不保存uniforms和顶点数据,只提供设置uniforms和use着色器的方法。编辑 /// 器针对每个shader,会通过shader代码找到声明的uniforms变量,并暴露给framework的material设置。 /// - class Shader final : virtual public Object, public Filesystem::Reloadable + class Shader ASURA_FINAL + : public Scripting::Portable + , public Filesystem::Reloadable { public: Shader(); + ~Shader(); - + /// /// 从代码编译shader,编译时会先检测是否有上次缓存的uniforms location map。使用glAttachShader重新编译生成着色器, /// 不会重新申请着色器程序。 @@ -42,12 +45,12 @@ namespace AsuraEngine /// /// 将当期shader设置为活动 /// - void Use(); + void Use(); /// /// 将当期shader设置为非活动 /// - void Unuse(); + void Unuse(); /// /// 在已经知道uniform location的情况下,设置值。 @@ -71,25 +74,6 @@ namespace AsuraEngine /// static uint GetGLTextureUnitCount(); - //---------------------------------------------------------------------------------------------------------- - - LUAX_DECL_FACTORY(SimShader); - - LUAX_DECL_METHOD(l_Use); - LUAX_DECL_METHOD(l_Unuse); - LUAX_DECL_METHOD(l_Load); - LUAX_DECL_METHOD(l_HasUniform); - LUAX_DECL_METHOD(l_GetUniformLocation); - LUAX_DECL_METHOD(l_SetBuiltInUniforms); - LUAX_DECL_METHOD(l_SetUniformFloat); - LUAX_DECL_METHOD(l_SetUniformTexture); - LUAX_DECL_METHOD(l_SetUniformVector2); - LUAX_DECL_METHOD(l_SetUniformVector3); - LUAX_DECL_METHOD(l_SetUniformVector4); - LUAX_DECL_METHOD(l_SetUniformColor); - - //---------------------------------------------------------------------------------------------------------- - private: /// @@ -110,6 +94,27 @@ namespace AsuraEngine /// GLuint mProgramHandle; + public: + + //---------------------------------------------------------------------------------------------------------- + + LUAX_DECL_FACTORY(SimShader); + + LUAX_DECL_METHOD(l_Use); + LUAX_DECL_METHOD(l_Unuse); + LUAX_DECL_METHOD(l_Load); + LUAX_DECL_METHOD(l_HasUniform); + LUAX_DECL_METHOD(l_GetUniformLocation); + LUAX_DECL_METHOD(l_SetBuiltInUniforms); + LUAX_DECL_METHOD(l_SetUniformFloat); + LUAX_DECL_METHOD(l_SetUniformTexture); + LUAX_DECL_METHOD(l_SetUniformVector2); + LUAX_DECL_METHOD(l_SetUniformVector3); + LUAX_DECL_METHOD(l_SetUniformVector4); + LUAX_DECL_METHOD(l_SetUniformColor); + + //---------------------------------------------------------------------------------------------------------- + }; } -- cgit v1.1-26-g67d0