summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorjussi2023-12-15 12:52:28 +0200
committerjussi2023-12-15 12:52:28 +0200
commit917ce853fcfb212e2343b6b2dac816b14ee50e46 (patch)
treef1793b99632d5c12ac7e6a06ae7fc2ead25c5650
parentba4595305fe426f81233ebbb20fc94cd86d07af9 (diff)
downloadreilua-enhanced-917ce853fcfb212e2343b6b2dac816b14ee50e46.tar.gz
reilua-enhanced-917ce853fcfb212e2343b6b2dac816b14ee50e46.tar.bz2
reilua-enhanced-917ce853fcfb212e2343b6b2dac816b14ee50e46.zip
Rest of rlRenderBatch functions.
-rw-r--r--API.md26
-rw-r--r--ReiLua_API.lua22
-rw-r--r--changelog1
-rw-r--r--include/lrlgl.h4
-rw-r--r--include/lua_core.h2
-rw-r--r--src/lua_core.c37
-rw-r--r--src/rlgl.c58
7 files changed, 150 insertions, 0 deletions
diff --git a/API.md b/API.md
index f6acb27..858c637 100644
--- a/API.md
+++ b/API.md
@@ -9515,6 +9515,32 @@ Get default shader locations
---
+> renderBatch = RL.rlLoadRenderBatch( int numBuffers, int bufferElements )
+
+Load a render batch system
+
+- Success return rlRenderBatch
+
+---
+
+> RL.rlUnloadRenderBatch( rlRenderBatch renderBatch )
+
+Unload render batch system
+
+---
+
+> RL.rlDrawRenderBatch( rlRenderBatch renderBatch )
+
+Draw render batch data (Update->Draw->Reset)
+
+---
+
+> RL.rlSetRenderBatchActive( rlRenderBatch renderBatch )
+
+Set the active render batch for rlgl (nil for default internal)
+
+---
+
> RL.rlDrawRenderBatchActive()
Update and draw internal render batch
diff --git a/ReiLua_API.lua b/ReiLua_API.lua
index 2c72ded..b2d2787 100644
--- a/ReiLua_API.lua
+++ b/ReiLua_API.lua
@@ -6567,6 +6567,28 @@ function RL.rlGetShaderLocsDefault() end
-- RLGL - Render batch management
+---Load a render batch system
+---- Success return rlRenderBatch
+---@param numBuffers integer
+---@param bufferElements integer
+---@return any renderBatch
+function RL.rlLoadRenderBatch( numBuffers, bufferElements ) end
+
+---Unload render batch system
+---@param renderBatch any
+---@return any RL.rlUnloadRenderBatch
+function RL.rlUnloadRenderBatch( renderBatch ) end
+
+---Draw render batch data (Update->Draw->Reset)
+---@param renderBatch any
+---@return any RL.rlDrawRenderBatch
+function RL.rlDrawRenderBatch( renderBatch ) end
+
+---Set the active render batch for rlgl (nil for default internal)
+---@param renderBatch any
+---@return any RL.rlSetRenderBatchActive
+function RL.rlSetRenderBatchActive( renderBatch ) end
+
---Update and draw internal render batch
---@return any RL.rlDrawRenderBatchActive
function RL.rlDrawRenderBatchActive() end
diff --git a/changelog b/changelog
index 424ef69..584d912 100644
--- a/changelog
+++ b/changelog
@@ -24,6 +24,7 @@ KEY CHANGES:
- ADDED: More Model animations management functions.
- ADDED: 2D lightmap example.
- ADDED: RLGL Hello triangle example.
+ - ADDED: Rest of rlRenderBatch functions.
DETAILED CHANGES:
- REMOVED: DrawLineBezierQuad, DrawLineBezierCubic.
diff --git a/include/lrlgl.h b/include/lrlgl.h
index 57e7060..71d9641 100644
--- a/include/lrlgl.h
+++ b/include/lrlgl.h
@@ -84,6 +84,10 @@ int lrlglGetTextureIdDefault( lua_State *L );
int lrlglGetShaderIdDefault( lua_State *L );
int lrlglGetShaderLocsDefault( lua_State *L );
/* Render batch management */
+int lrlglLoadRenderBatch( lua_State *L );
+int lrlglUnloadRenderBatch( lua_State *L );
+int lrlglDrawRenderBatch( lua_State *L );
+int lrlglSetRenderBatchActive( lua_State *L );
int lrlglDrawRenderBatchActive( lua_State *L );
int lrlglCheckRenderBatchLimit( lua_State *L );
int lrlglSetTexture( lua_State *L );
diff --git a/include/lua_core.h b/include/lua_core.h
index df3f1d6..ba56f27 100644
--- a/include/lua_core.h
+++ b/include/lua_core.h
@@ -64,6 +64,7 @@ Light* uluaGetLight( lua_State *L, int index );
Material* uluaGetMaterial( lua_State *L, int index );
Model* uluaGetModel( lua_State *L, int index );
ModelAnimation* uluaGetModelAnimation( lua_State *L, int index );
+rlRenderBatch* uluaGetRLRenderBatch( lua_State *L, int index );
/* Lua push types. */
void uluaPushColor( lua_State *L, Color color );
void uluaPushVector2( lua_State *L, Vector2 vector );
@@ -94,5 +95,6 @@ void uluaPushMaterial( lua_State *L, Material material );
void uluaPushMesh( lua_State *L, Mesh mesh );
void uluaPushModel( lua_State *L, Model model );
void uluaPushModelAnimation( lua_State *L, ModelAnimation modelAnimation );
+void uluaPushRLRenderBatch( lua_State *L, rlRenderBatch renderBatch );
/* Utils. */
int uluaGetTableLen( lua_State *L, int index );
diff --git a/src/lua_core.c b/src/lua_core.c
index 68fb05b..61f08b5 100644
--- a/src/lua_core.c
+++ b/src/lua_core.c
@@ -299,6 +299,25 @@ static void defineModelAnimation() {
lua_setfield( L, -2, "__gc" );
}
+ /* rlRenderBatch. */
+static int gcRLRenderBatch( lua_State *L ) {
+ if ( state->gcUnload ) {
+ rlRenderBatch *renderBatch = luaL_checkudata( L, 1, "rlRenderBatch" );
+ rlUnloadRenderBatch( *renderBatch );
+ }
+ return 0;
+}
+
+static void defineRLRenderBatch() {
+ lua_State *L = state->luaState;
+
+ luaL_newmetatable( L, "rlRenderBatch" );
+ lua_pushvalue( L, -1 );
+ lua_setfield( L, -2, "__index" );
+ lua_pushcfunction( L, gcRLRenderBatch );
+ lua_setfield( L, -2, "__gc" );
+}
+
/* Assing globals. */
void assignGlobalInt( int value, const char *name ) {
@@ -993,6 +1012,7 @@ bool luaInit( int argn, const char **argc ) {
defineMesh();
defineModel();
defineModelAnimation();
+ defineRLRenderBatch();
/* Define globals. */
defineGlobals();
platformDefineGlobals();
@@ -2031,6 +2051,10 @@ void luaRegister() {
assingGlobalFunction( "rlGetShaderIdDefault", lrlglGetShaderIdDefault );
assingGlobalFunction( "rlGetShaderLocsDefault", lrlglGetShaderLocsDefault );
/* Render batch management. */
+ assingGlobalFunction( "rlLoadRenderBatch", lrlglLoadRenderBatch );
+ assingGlobalFunction( "rlUnloadRenderBatch", lrlglUnloadRenderBatch );
+ assingGlobalFunction( "rlDrawRenderBatch", lrlglDrawRenderBatch );
+ assingGlobalFunction( "rlSetRenderBatchActive", lrlglSetRenderBatchActive );
assingGlobalFunction( "rlDrawRenderBatchActive", lrlglDrawRenderBatchActive );
assingGlobalFunction( "rlCheckRenderBatchLimit", lrlglCheckRenderBatchLimit );
assingGlobalFunction( "rlSetTexture", lrlglSetTexture );
@@ -2842,6 +2866,13 @@ ModelAnimation* uluaGetModelAnimation( lua_State *L, int index ) {
return luaL_checkudata( L, index, "ModelAnimation" );
}
+rlRenderBatch* uluaGetRLRenderBatch( lua_State *L, int index ) {
+ if ( lua_islightuserdata( L, index ) ) {
+ return (rlRenderBatch*)lua_touserdata( L, index );
+ }
+ return luaL_checkudata( L, index, "rlRenderBatch" );
+}
+
/* Push types. */
void uluaPushColor( lua_State *L, Color color ) {
@@ -3145,6 +3176,12 @@ void uluaPushModelAnimation( lua_State *L, ModelAnimation modelAnimation ) {
luaL_setmetatable( L, "ModelAnimation" );
}
+void uluaPushRLRenderBatch( lua_State *L, rlRenderBatch renderBatch ) {
+ rlRenderBatch *renderBatchP = lua_newuserdata( L, sizeof( rlRenderBatch ) );
+ *renderBatchP = renderBatch;
+ luaL_setmetatable( L, "rlRenderBatch" );
+}
+
int uluaGetTableLen( lua_State *L, int index ) {
luaL_checktype( L, index, LUA_TTABLE );
int t = index, i = 0;
diff --git a/src/rlgl.c b/src/rlgl.c
index a71aa61..02e2f75 100644
--- a/src/rlgl.c
+++ b/src/rlgl.c
@@ -967,6 +967,64 @@ int lrlglGetShaderLocsDefault( lua_State *L ) {
*/
/*
+> renderBatch = RL.rlLoadRenderBatch( int numBuffers, int bufferElements )
+
+Load a render batch system
+
+- Success return rlRenderBatch
+*/
+int lrlglLoadRenderBatch( lua_State *L ) {
+ int numBuffers = luaL_checkinteger( L, 1 );
+ int bufferElements = luaL_checkinteger( L, 2 );
+
+ uluaPushRLRenderBatch( L, rlLoadRenderBatch( numBuffers, bufferElements ) );
+
+ return 1;
+}
+
+/*
+> RL.rlUnloadRenderBatch( rlRenderBatch renderBatch )
+
+Unload render batch system
+*/
+int lrlglUnloadRenderBatch( lua_State *L ) {
+ rlRenderBatch *renderBatch = uluaGetRLRenderBatch( L, 1 );
+
+ rlUnloadRenderBatch( *renderBatch );
+
+ return 0;
+}
+
+/*
+> RL.rlDrawRenderBatch( rlRenderBatch renderBatch )
+
+Draw render batch data (Update->Draw->Reset)
+*/
+int lrlglDrawRenderBatch( lua_State *L ) {
+ rlRenderBatch *renderBatch = uluaGetRLRenderBatch( L, 1 );
+
+ rlDrawRenderBatch( renderBatch );
+
+ return 0;
+}
+
+/*
+> RL.rlSetRenderBatchActive( rlRenderBatch renderBatch )
+
+Set the active render batch for rlgl (nil for default internal)
+*/
+int lrlglSetRenderBatchActive( lua_State *L ) {
+ rlRenderBatch *renderBatch = NULL;
+
+ if ( !lua_isnil( L, 1 ) ) {
+ renderBatch = uluaGetRLRenderBatch( L, 1 );
+ }
+ rlSetRenderBatchActive( renderBatch );
+
+ return 0;
+}
+
+/*
> RL.rlDrawRenderBatchActive()
Update and draw internal render batch