From ba4595305fe426f81233ebbb20fc94cd86d07af9 Mon Sep 17 00:00:00 2001 From: jussi Date: Thu, 14 Dec 2023 23:08:19 +0200 Subject: RLGL Hello triangle example. --- src/core.c | 15 +++++++++++++++ src/lua_core.c | 2 ++ src/rlgl.c | 4 ++-- src/textures.c | 22 ++++++++++++++++++++++ 4 files changed, 41 insertions(+), 2 deletions(-) (limited to 'src') diff --git a/src/core.c b/src/core.c index 2513649..9dfbe01 100644 --- a/src/core.c +++ b/src/core.c @@ -884,6 +884,21 @@ int lcoreIsShaderReady( lua_State *L ) { return 1; } +/* +> shaderId = RL.GetShaderId( Shader shader ) + +Get shader program id + +- Success return int +*/ +int lcoreGetShaderId( lua_State *L ) { + Shader *shader = uluaGetShader( L, 1 ); + + lua_pushinteger( L, shader->id ); + + return 1; +} + /* > location = RL.GetShaderLocation( Shader shader, string uniformName ) diff --git a/src/lua_core.c b/src/lua_core.c index 6195c9f..68fb05b 100644 --- a/src/lua_core.c +++ b/src/lua_core.c @@ -1225,6 +1225,7 @@ void luaRegister() { assingGlobalFunction( "LoadShader", lcoreLoadShader ); assingGlobalFunction( "LoadShaderFromMemory", lcoreLoadShaderFromMemory ); assingGlobalFunction( "IsShaderReady", lcoreIsShaderReady ); + assingGlobalFunction( "GetShaderId", lcoreGetShaderId ); assingGlobalFunction( "GetShaderLocation", lcoreGetShaderLocation ); assingGlobalFunction( "GetShaderLocationAttrib", lcoreGetShaderLocationAttrib ); assingGlobalFunction( "SetShaderLocationIndex", lcoreSetShaderLocationIndex ); @@ -1497,6 +1498,7 @@ void luaRegister() { assingGlobalFunction( "GetImageAlphaBorder", ltexturesGetImageAlphaBorder ); assingGlobalFunction( "GetImageColor", ltexturesGetImageColor ); /* Image configuration functions. */ + assingGlobalFunction( "GetImageData", ltexturesGetImageData ); assingGlobalFunction( "GetImageSize", ltexturesGetImageSize ); assingGlobalFunction( "GetImageMipmaps", ltexturesGetImageMipmaps ); assingGlobalFunction( "GetImageFormat", ltexturesGetImageFormat ); diff --git a/src/rlgl.c b/src/rlgl.c index 65a57a1..a71aa61 100644 --- a/src/rlgl.c +++ b/src/rlgl.c @@ -1105,7 +1105,7 @@ int lrlglUnloadVertexBuffer( lua_State *L ) { /* > RL.rlSetVertexAttribute( int index, int compSize, int type, bool normalized, int stride, int pointer ) -Set vertex attribute +Set vertex attribute. Note! Pointer should be given in size of bytes */ int lrlglSetVertexAttribute( lua_State *L ) { int index = luaL_checkinteger( L, 1 ); @@ -1115,7 +1115,7 @@ int lrlglSetVertexAttribute( lua_State *L ) { int stride = luaL_checkinteger( L, 5 ); int pointer = luaL_checkinteger( L, 6 ); - rlSetVertexAttribute( index, compSize, type, normalized, stride, &pointer ); + rlSetVertexAttribute( index, compSize, type, normalized, stride, (void*)( pointer * sizeof( char ) ) ); return 0; } diff --git a/src/textures.c b/src/textures.c index 717db91..8a99b34 100644 --- a/src/textures.c +++ b/src/textures.c @@ -839,6 +839,28 @@ int ltexturesGetImageColor( lua_State *L ) { ## Textures - Image configuration functions */ +/* +> imageData = RL.GetImageData( Image image ) + +Get image data as Buffer + +- Success return Buffer +*/ +int ltexturesGetImageData( lua_State *L ) { + Image *image = uluaGetImage( L, 1 ); + + Buffer buffer = (Buffer){ + .type = BUFFER_UNSIGNED_CHAR, + .size = GetPixelDataSize( image->width, image->height, image->format ), + }; + buffer.data = malloc( buffer.size * sizeof( unsigned char ) ); + memcpy( buffer.data, image->data, buffer.size ); + + uluaPushBuffer( L, buffer ); + + return 1; +} + /* > size = RL.GetImageSize( Image image ) -- cgit v1.2.3