diff options
author | chai <chaifix@163.com> | 2021-10-31 17:13:50 +0800 |
---|---|---|
committer | chai <chaifix@163.com> | 2021-10-31 17:13:50 +0800 |
commit | 4b24de9ef863f54eb09a5fa1f18e2905cedcc439 (patch) | |
tree | 71a816c891ea355529a6a4e0665e0137b4f4810e /Runtime/Scripting/Rendering | |
parent | 601442f94fc0dcfdc5a117c5f87d90b156d53045 (diff) |
+ shader command
Diffstat (limited to 'Runtime/Scripting/Rendering')
-rw-r--r-- | Runtime/Scripting/Rendering/Shader.bind.cpp | 15 |
1 files changed, 14 insertions, 1 deletions
diff --git a/Runtime/Scripting/Rendering/Shader.bind.cpp b/Runtime/Scripting/Rendering/Shader.bind.cpp index 0137447..482efb9 100644 --- a/Runtime/Scripting/Rendering/Shader.bind.cpp +++ b/Runtime/Scripting/Rendering/Shader.bind.cpp @@ -1,6 +1,7 @@ #include "Runtime/Graphics/Shader.h" #include "Runtime/Debug/Log.h" #include "Runtime/Graphics/GfxDevice.h" +#include "Runtime/Common/DataBuffer.h" using namespace LuaBind; @@ -30,10 +31,11 @@ LUA_BIND_POSTPROCESS(Shader) // Shader.New(glsl[, keepSrc]) // Shader.New(vsh, fsh[, keepSrc]) +// Shader.New(DataBuffer) LUA_BIND_IMPL_METHOD(Shader, _New) { LUA_BIND_STATE(L, Shader); - LUA_BIND_CHECK(L, "SS!|S!"); + LUA_BIND_CHECK(L, "SS!|S!|U!"); try { Shader* shader = NULL; if(state.CheckParams(1, "SS!")) @@ -47,6 +49,17 @@ LUA_BIND_IMPL_METHOD(Shader, _New) std::string glsl = state.GetValue<cc8*>(1, ""); shader = new Shader(state.GetVM(), glsl); } + else if (LuaHelper::IsType(state, "GameLab.DataBuffer", 1)) + { + DataBuffer* buffer = state.GetUserdata<DataBuffer>(1); + if (buffer == NULL) + { + log_error("Unable to create shader, databuffer is empty"); + return 0; + } + std::string glsl = buffer->data; + shader = new Shader(state.GetVM(), glsl); + } if (shader != NULL) shader->PushUserdata(state); else |