diff options
author | chai <chaifix@163.com> | 2021-10-26 19:33:40 +0800 |
---|---|---|
committer | chai <chaifix@163.com> | 2021-10-26 19:33:40 +0800 |
commit | 051abd04e4527095ef15412939450fbe504daebe (patch) | |
tree | 30a966d104ee866bc135cce58b4a5fa561c8c4e7 /Runtime/Scripting/Rendering/Rendering.bind.cpp | |
parent | b1228baf73f6dc3336e24afbf36087e15730732a (diff) |
+texture & imagedata
Diffstat (limited to 'Runtime/Scripting/Rendering/Rendering.bind.cpp')
-rw-r--r-- | Runtime/Scripting/Rendering/Rendering.bind.cpp | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/Runtime/Scripting/Rendering/Rendering.bind.cpp b/Runtime/Scripting/Rendering/Rendering.bind.cpp index 29fa421..40b3ac5 100644 --- a/Runtime/Scripting/Rendering/Rendering.bind.cpp +++ b/Runtime/Scripting/Rendering/Rendering.bind.cpp @@ -1,4 +1,32 @@ #include "Runtime/Graphics/Shader.h" +#include "Runtime/Graphics/Texture.h" +#include "Runtime/Graphics/ImageData.h" + +#define STB_IMAGE_IMPLEMENTATION +#include "ThirdParty/stb/stb_image.h" + +// imgData = Rendering.LoadImage(path) +int LoadImage(lua_State* L) +{ + LUA_BIND_STATE(L); + + const char* path = state.GetValue<const char*>(1, ""); + + stbi_set_flip_vertically_on_load(true); + ImageData* data = new ImageData(state.GetVM()); + int channels; + data->pixels = stbi_load(path, &data->width, &data->height, &channels, 0);
+ data->format = ImageData::EPixelFormat::RGB; + data->type = ImageData::EPixelElementType::UNSIGNED_BYTE; + + data->PushUserdata(state); + return 1; +} + +static luaL_Reg funcs[] = { + {"LoadImage", LoadImage}, + {0, 0} +}; int luaopen_GameLab_Engine_Rendering(lua_State* L) { @@ -11,7 +39,11 @@ int luaopen_GameLab_Engine_Rendering(lua_State* L) state.PushNamespace("Engine"); state.PushNamespace("Rendering"); + state.RegisterMethods(funcs); + state.RegisterNativeClass<Shader>(); + state.RegisterNativeClass<ImageData>(); + state.RegisterNativeClass<Texture>(); return 1; }
\ No newline at end of file |