summaryrefslogtreecommitdiff
path: root/Runtime/Scripting/Rendering/Rendering.bind.cpp
diff options
context:
space:
mode:
authorchai <chaifix@163.com>2021-10-26 19:33:40 +0800
committerchai <chaifix@163.com>2021-10-26 19:33:40 +0800
commit051abd04e4527095ef15412939450fbe504daebe (patch)
tree30a966d104ee866bc135cce58b4a5fa561c8c4e7 /Runtime/Scripting/Rendering/Rendering.bind.cpp
parentb1228baf73f6dc3336e24afbf36087e15730732a (diff)
+texture & imagedata
Diffstat (limited to 'Runtime/Scripting/Rendering/Rendering.bind.cpp')
-rw-r--r--Runtime/Scripting/Rendering/Rendering.bind.cpp32
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