Rest of rlRenderBatch functions.

This commit is contained in:
jussi
2023-12-15 12:52:28 +02:00
parent ba4595305f
commit 917ce853fc
7 changed files with 150 additions and 0 deletions

26
API.md
View File

@@ -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

View File

@@ -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

View File

@@ -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.

View File

@@ -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 );

View File

@@ -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 );

View File

@@ -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;

View File

@@ -966,6 +966,64 @@ int lrlglGetShaderLocsDefault( lua_State *L ) {
## RLGL - Render batch management
*/
/*
> 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()