From 0e77452a1b4f894e342dae5583f8b02f915e8f6d Mon Sep 17 00:00:00 2001 From: jussi Date: Mon, 5 Jun 2023 20:51:09 +0300 Subject: Rest of rlgl General render state functions. --- src/lua_core.c | 14 ++++ src/rlgl.c | 218 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 232 insertions(+) (limited to 'src') diff --git a/src/lua_core.c b/src/lua_core.c index 74c1d9e..7e0ead3 100644 --- a/src/lua_core.c +++ b/src/lua_core.c @@ -1519,10 +1519,24 @@ void luaRegister() { assingGlobalFunction( "rlEnableBackfaceCulling", lrlglEnableBackfaceCulling ); assingGlobalFunction( "rlDisableBackfaceCulling", lrlglDisableBackfaceCulling ); assingGlobalFunction( "rlSetCullFace", lrlglSetCullFace ); + assingGlobalFunction( "rlEnableScissorTest", lrlglEnableScissorTest ); + assingGlobalFunction( "rlDisableScissorTest", lrlglDisableScissorTest ); + assingGlobalFunction( "rlScissor", lrlglScissor ); + assingGlobalFunction( "rlEnableWireMode", lrlglEnableWireMode ); + assingGlobalFunction( "rlDisableWireMode", lrlglDisableWireMode ); assingGlobalFunction( "rlSetLineWidth", lrlglSetLineWidth ); assingGlobalFunction( "rlGetLineWidth", lrlglGetLineWidth ); assingGlobalFunction( "rlEnableSmoothLines", lrlglEnableSmoothLines ); assingGlobalFunction( "rlDisableSmoothLines", lrlglDisableSmoothLines ); + assingGlobalFunction( "rlEnableStereoRender", lrlglEnableStereoRender ); + assingGlobalFunction( "rlDisableStereoRender", lrlglDisableStereoRender ); + assingGlobalFunction( "rlIsStereoRenderEnabled", lrlglIsStereoRenderEnabled ); + assingGlobalFunction( "rlClearColor", lrlglClearColor ); + assingGlobalFunction( "rlClearScreenBuffers", lrlglClearScreenBuffers ); + assingGlobalFunction( "rlCheckErrors", lrlglCheckErrors ); + assingGlobalFunction( "rlSetBlendMode", lrlglSetBlendMode ); + assingGlobalFunction( "rlSetBlendFactors", lrlglSetBlendFactors ); + assingGlobalFunction( "rlSetBlendFactorsSeparate", lrlglSetBlendFactorsSeparate ); /* Initialization functions. */ assingGlobalFunction( "rlGetVersion", lrlglGetVersion ); /* Render batch management. */ diff --git a/src/rlgl.c b/src/rlgl.c index a4ddd36..205d314 100644 --- a/src/rlgl.c +++ b/src/rlgl.c @@ -723,6 +723,72 @@ int lrlglSetCullFace( lua_State *L ) { return 1; } +/* +> RL.rlEnableScissorTest() + +Enable scissor test +*/ +int lrlglEnableScissorTest( lua_State *L ) { + rlEnableScissorTest(); + + return 0; +} + +/* +> RL.rlDisableScissorTest() + +Disable scissor test +*/ +int lrlglDisableScissorTest( lua_State *L ) { + rlDisableScissorTest(); + + return 0; +} + +/* +> success = RL.rlScissor( Rectangle area ) + +Scissor test + +- Failure return false +- Success return true +*/ +int lrlglScissor( lua_State *L ) { + if ( !lua_istable( L, 1 ) ) { + TraceLog( LOG_WARNING, "%s", "Bad call of function. RL.rlScissor( Rectangle area )" ); + lua_pushboolean( L, false ); + return 1; + } + Rectangle area = uluaGetRectangleIndex( L, 1 ); + + rlScissor( area.x, area.y, area.width, area.height ); + lua_pushboolean( L, true ); + + return 1; +} + +/* +> RL.rlEnableWireMode() + +Enable wire mode +*/ +int lrlglEnableWireMode( lua_State *L ) { + rlEnableWireMode(); + + return 0; +} + +/* +> RL.rlDisableWireMode() + +Disable wire mode +*/ +int lrlglDisableWireMode( lua_State *L ) { + rlDisableWireMode(); + + return 0; +} + /* > success = RL.rlSetLineWidth( float width ) @@ -778,6 +844,158 @@ int lrlglDisableSmoothLines( lua_State *L ) { return 0; } +/* +> RL.rlEnableStereoRender() + +Enable stereo rendering +*/ +int lrlglEnableStereoRender( lua_State *L ) { + rlEnableStereoRender(); + + return 0; +} + +/* +> RL.rlDisableStereoRender() + +Enable stereo rendering +*/ +int lrlglDisableStereoRender( lua_State *L ) { + rlDisableStereoRender(); + + return 0; +} + +/* +> enabled = RL.rlIsStereoRenderEnabled() + +Check if stereo render is enabled + +- Success return bool +*/ +int lrlglIsStereoRenderEnabled( lua_State *L ) { + lua_pushboolean( L, rlIsStereoRenderEnabled() ); + + return 1; +} + +/* +> success = RL.rlClearColor( Color color ) + +Clear color buffer with color + +- Failure return false +- Success return true +*/ +int lrlglClearColor( lua_State *L ) { + if ( !lua_istable( L, 1 ) ) { + TraceLog( LOG_WARNING, "%s", "Bad call of function. RL.rlClearColor( Color color )" ); + lua_pushboolean( L, false ); + return 1; + } + Color color = uluaGetColorIndex( L, 1 ); + + rlClearColor( color.r, color.g, color.b, color.a ); + lua_pushboolean( L, true ); + + return 1; +} + +/* +> RL.rlClearScreenBuffers() + +Clear used screen buffers ( color and depth ) +*/ +int lrlglClearScreenBuffers( lua_State *L ) { + rlClearScreenBuffers(); + + return 0; +} + +/* +> RL.rlCheckErrors() + +Check and log OpenGL error codes +*/ +int lrlglCheckErrors( lua_State *L ) { + rlCheckErrors(); + + return 0; +} + +/* +> success = RL.rlSetBlendMode( int mode ) + +Set blending mode + +- Failure return false +- Success return true +*/ +int lrlglSetBlendMode( lua_State *L ) { + if ( !lua_isnumber( L, 1 ) ) { + TraceLog( LOG_WARNING, "%s", "Bad call of function. RL.rlSetBlendMode( int mode )" ); + lua_pushboolean( L, false ); + return 1; + } + rlSetBlendMode( lua_tointeger( L, 1 ) ); + lua_pushboolean( L, true ); + + return 1; +} + +/* +> success = RL.rlSetBlendFactors( int glSrcFactor, int glDstFactor, int glEquation ) + +Set blending mode factor and equation ( using OpenGL factors ) + +- Failure return false +- Success return true +*/ +int lrlglSetBlendFactors( lua_State *L ) { + if ( !lua_isnumber( L, 1 ) || !lua_isnumber( L, 2 ) || !lua_isnumber( L, 3 ) ) { + TraceLog( LOG_WARNING, "%s", "Bad call of function. RL.rlSetBlendFactors( int glSrcFactor, int glDstFactor, int glEquation )" ); + lua_pushboolean( L, false ); + return 1; + } + int glSrcFactor = lua_tointeger( L, 1 ); + int glDstFactor = lua_tointeger( L, 2 ); + int glEquation = lua_tointeger( L, 3 ); + + rlSetBlendFactors( glSrcFactor, glDstFactor, glEquation ); + lua_pushboolean( L, true ); + + return 1; +} + +/* +> success = RL.rlSetBlendFactorsSeparate( int glSrcRGB, int glDstRGB, int glSrcAlpha, int glDstAlpha, int glEqRGB, int glEqAlpha ) + +Set blending mode factors and equations separately ( using OpenGL factors ) + +- Failure return false +- Success return true +*/ +int lrlglSetBlendFactorsSeparate( lua_State *L ) { + if ( !lua_isnumber( L, 1 ) || !lua_isnumber( L, 2 ) || !lua_isnumber( L, 3 ) + || !lua_isnumber( L, 4 ) || !lua_isnumber( L, 5 ) || !lua_isnumber( L, 6 ) ) { + TraceLog( LOG_WARNING, "%s", "Bad call of function. RL.rlSetBlendFactorsSeparate( int glSrcRGB, int glDstRGB, int glSrcAlpha, int glDstAlpha, int glEqRGB, int glEqAlpha )" ); + lua_pushboolean( L, false ); + return 1; + } + int glSrcRGB = lua_tointeger( L, 1 ); + int glDstRGB = lua_tointeger( L, 2 ); + int glSrcAlpha = lua_tointeger( L, 3 ); + int glDstAlpha = lua_tointeger( L, 4 ); + int glEqRGB = lua_tointeger( L, 5 ); + int glEqAlpha = lua_tointeger( L, 6 ); + + rlSetBlendFactorsSeparate( glSrcRGB, glDstRGB, glSrcAlpha, glDstAlpha, glEqRGB, glEqAlpha ); + lua_pushboolean( L, true ); + + return 1; +} + + /* ## RLGL - Initialization functions */ -- cgit v1.2.3