diff options
author | chai <chaifix@163.com> | 2021-10-29 22:28:12 +0800 |
---|---|---|
committer | chai <chaifix@163.com> | 2021-10-29 22:28:12 +0800 |
commit | 164885fd98d48703bd771f802d79557b7db97431 (patch) | |
tree | 7c396e475082644ec6994bcc7f3914eb4efb0c5a | |
parent | 655466e2d798b72ee3d3be7fcfe32db6af2d4466 (diff) |
* !!! 允许NativeClass延后绑定VM
-rw-r--r-- | Data/Scripts/Editor/AssetBrowser.lua | 1 | ||||
-rw-r--r-- | Runtime/Graphics/Shader.cpp | 5 | ||||
-rw-r--r-- | Runtime/Graphics/Shader.h | 1 | ||||
-rw-r--r-- | Runtime/Lua/LuaBind/LuaBindClass.hpp | 27 |
4 files changed, 34 insertions, 0 deletions
diff --git a/Data/Scripts/Editor/AssetBrowser.lua b/Data/Scripts/Editor/AssetBrowser.lua index 2617fbc..65f6f6f 100644 --- a/Data/Scripts/Editor/AssetBrowser.lua +++ b/Data/Scripts/Editor/AssetBrowser.lua @@ -78,6 +78,7 @@ AssetBrowser.OnGUI = function(self) Engine.Rendering.SetMatrix44("mvp", ortho)
Engine.Rendering.SetTexture("tex", tex)
Engine.Rendering.DrawUIQuad({10, 30, 100, 100})
+
Engine.Rendering.ResetUniformState()
end
diff --git a/Runtime/Graphics/Shader.cpp b/Runtime/Graphics/Shader.cpp index 2c3d686..4c41d6b 100644 --- a/Runtime/Graphics/Shader.cpp +++ b/Runtime/Graphics/Shader.cpp @@ -35,6 +35,11 @@ void checkCompileshaderErrorors(GLuint shader, std::string type) } } +Shader::Shader() + : NativeClass<Shader>() +{ +} + Shader::Shader(LuaBind::VM*vm) : NativeClass<Shader>(vm) { diff --git a/Runtime/Graphics/Shader.h b/Runtime/Graphics/Shader.h index 8a8c1f5..3410e20 100644 --- a/Runtime/Graphics/Shader.h +++ b/Runtime/Graphics/Shader.h @@ -11,6 +11,7 @@ class Shader : public LuaBind::NativeClass<Shader>
{
public:
+ Shader()/*throw(ShaderCompileExecption)*/;
Shader(LuaBind::VM*vm)/*throw(ShaderCompileExecption)*/;
Shader(LuaBind::VM*vm, std::string& glslShader)/*throw(ShaderCompileExecption)*/;
Shader(LuaBind::VM*vm, const char* vert, const char* frag)/*throw(ShaderCompileExecption)*/;
diff --git a/Runtime/Lua/LuaBind/LuaBindClass.hpp b/Runtime/Lua/LuaBind/LuaBindClass.hpp index 1da8513..aed4741 100644 --- a/Runtime/Lua/LuaBind/LuaBindClass.hpp +++ b/Runtime/Lua/LuaBind/LuaBindClass.hpp @@ -81,6 +81,8 @@ namespace LuaBind protected: + // ӺVM + NativeClass(); // Ҫָ NativeClass(LuaBind::VM* vm); virtual ~NativeClass(); @@ -108,6 +110,9 @@ namespace LuaBind // userdataʵstate void BindToLua(State& state); + // ӺVMBindToLua + void LateBindVM(VM* vm); + //------------------------------------------------------------------------------// // @@ -196,6 +201,12 @@ namespace LuaBind } template<class TYPE, class BASE> + void NativeClass<TYPE, BASE>::LateBindVM(VM* vm) + { + mOwner = vm; + } + + template<class TYPE, class BASE> void NativeClass<TYPE, BASE>::PushClassTable(State& state) { LuaBind::VM* vm = state.GetVM(); @@ -203,6 +214,17 @@ namespace LuaBind } template<class TYPE, class BASE> + NativeClass<TYPE, BASE>::NativeClass() + : mWatchDog() + , mUserdata(NULL) + , mOwner(NULL) +#if LUA_BIND_PROFILER + , mSafer(false) +#endif + { + } + + template<class TYPE, class BASE> NativeClass<TYPE, BASE>::NativeClass(LuaBind::VM* vm) : mWatchDog() , mUserdata(vm) @@ -341,6 +363,11 @@ namespace LuaBind { assert(!mUserdata);
+ if (mOwner == NULL)
+ {
+ LateBindVM(state.GetVM());
+ }
+
// userdataջעַҪתΪTYPE*ֱthisܻᵼ¶ؼ̳еɥʧ̬
// ֱӴthisȥڶؼ̳£òһͷ麯ġҪthis
// תΪĵ͵ַõһ麯ͨһʵֶ̬
|