rlgl Matrix state management.
This commit is contained in:
@@ -34,7 +34,7 @@ Application needs 'main.lua' or 'main' file as entry point. ReiLua executable wi
|
||||
|
||||
Example of basic "main.lua" file that will show basic windows with text.
|
||||
|
||||
```
|
||||
```Lua
|
||||
local textColor = RL.BLACK
|
||||
local textPos = { 192, 200 }
|
||||
|
||||
|
||||
@@ -34,6 +34,7 @@ KEY CHANGES:
|
||||
- ADDED: rlgl Shader state.
|
||||
- ADDED: RL.event function with input events.
|
||||
- ADDED: Window events.
|
||||
- ADDED: rlgl Matrix state management.
|
||||
|
||||
Detailed changes:
|
||||
- FIXED: uluaGetRay was looking for integers instead of tables
|
||||
@@ -103,7 +104,7 @@ Detailed changes:
|
||||
- FIXED: isValidRenderTexture checks that it is TEXTURE_TYPE_RENDER_TEXTURE
|
||||
- FIXED: isValidTexture on CreateMaterial
|
||||
- CHANGED: Renamed start, end arguments to a, b to avoid using Lua keyword "end" in argument names
|
||||
- ADDED: Argumets stored in "RL.arg" array
|
||||
- ADDED: Arguments stored in "RL.arg" array
|
||||
|
||||
------------------------------------------------------------------------
|
||||
Release: ReiLua version 0.4.0 Using Raylib 4.2
|
||||
|
||||
1
devnotes
1
devnotes
@@ -1,7 +1,6 @@
|
||||
Current {
|
||||
* rlgl
|
||||
* Vertex buffers management
|
||||
* Matrix state management
|
||||
* Shaders management
|
||||
* Compute shader management
|
||||
}
|
||||
|
||||
@@ -95,4 +95,14 @@ int lrlglUnloadTexture( lua_State *L );
|
||||
int lrlglLoadFramebuffer( lua_State *L );
|
||||
int lrlglFramebufferAttach( lua_State *L );
|
||||
int lrlglFramebufferComplete( lua_State *L );
|
||||
int lrlglUnloadFramebuffer( lua_State *L );
|
||||
int lrlglUnloadFramebuffer( lua_State *L );
|
||||
/* Matrix state management */
|
||||
int lrlglGetMatrixModelview( lua_State *L );
|
||||
int lrlglGetMatrixProjection( lua_State *L );
|
||||
int lrlglGetMatrixTransform( lua_State *L );
|
||||
int lrlglGetMatrixProjectionStereo( lua_State *L );
|
||||
int lrlglGetMatrixViewOffsetStereo( lua_State *L );
|
||||
int lrlglSetMatrixProjection( lua_State *L );
|
||||
int lrlglSetMatrixModelview( lua_State *L );
|
||||
int lrlglSetMatrixProjectionStereo( lua_State *L );
|
||||
int lrlglSetMatrixViewOffsetStereo( lua_State *L );
|
||||
|
||||
4
lib/.gitignore
vendored
4
lib/.gitignore
vendored
@@ -1 +1,3 @@
|
||||
*
|
||||
libraylib.a
|
||||
liblua.a
|
||||
libluajit.a
|
||||
|
||||
@@ -1957,6 +1957,16 @@ void luaRegister() {
|
||||
assingGlobalFunction( "rlFramebufferAttach", lrlglFramebufferAttach );
|
||||
assingGlobalFunction( "rlFramebufferComplete", lrlglFramebufferComplete );
|
||||
assingGlobalFunction( "rlUnloadFramebuffer", lrlglUnloadFramebuffer );
|
||||
/* Matrix state management. */
|
||||
assingGlobalFunction( "rlGetMatrixModelview", lrlglGetMatrixModelview );
|
||||
assingGlobalFunction( "rlGetMatrixProjection", lrlglGetMatrixProjection );
|
||||
assingGlobalFunction( "rlGetMatrixTransform", lrlglGetMatrixTransform );
|
||||
assingGlobalFunction( "rlGetMatrixProjectionStereo", lrlglGetMatrixProjectionStereo );
|
||||
assingGlobalFunction( "rlGetMatrixViewOffsetStereo", lrlglGetMatrixViewOffsetStereo );
|
||||
assingGlobalFunction( "rlSetMatrixProjection", lrlglSetMatrixProjection );
|
||||
assingGlobalFunction( "rlSetMatrixModelview", lrlglSetMatrixModelview );
|
||||
assingGlobalFunction( "rlSetMatrixProjectionStereo", lrlglSetMatrixProjectionStereo );
|
||||
assingGlobalFunction( "rlSetMatrixViewOffsetStereo", lrlglSetMatrixViewOffsetStereo );
|
||||
|
||||
/* OpenGL */
|
||||
/* Framebuffer management. */
|
||||
|
||||
165
src/rlgl.c
165
src/rlgl.c
@@ -1579,7 +1579,7 @@ Delete framebuffer from GPU
|
||||
int lrlglUnloadFramebuffer( lua_State *L ) {
|
||||
if ( !lua_isnumber( L, 1 ) ) {
|
||||
TraceLog( state->logLevelInvalid, "%s", "Bad call of function. RL.rlUnloadFramebuffer( int id )" );
|
||||
lua_pushboolean( L, false );
|
||||
lua_pushnil( L );
|
||||
return 1;
|
||||
}
|
||||
unsigned int id = lua_tointeger( L, 1 );
|
||||
@@ -1588,4 +1588,165 @@ int lrlglUnloadFramebuffer( lua_State *L ) {
|
||||
lua_pushboolean( L, true );
|
||||
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
## RLGL - Matrix state management
|
||||
*/
|
||||
|
||||
/*
|
||||
> modelview = RL.rlGetMatrixModelview()
|
||||
|
||||
Get internal modelview matrix
|
||||
|
||||
- Success return Matrix
|
||||
*/
|
||||
int lrlglGetMatrixModelview( lua_State *L ) {
|
||||
uluaPushMatrix( L, rlGetMatrixModelview() );
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
/*
|
||||
> projection = RL.rlGetMatrixProjection()
|
||||
|
||||
Get internal projection matrix
|
||||
|
||||
- Success return Matrix
|
||||
*/
|
||||
int lrlglGetMatrixProjection( lua_State *L ) {
|
||||
uluaPushMatrix( L, rlGetMatrixProjection() );
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
/*
|
||||
> transform = RL.rlGetMatrixTransform()
|
||||
|
||||
Get internal accumulated transform matrix
|
||||
|
||||
- Success return Matrix
|
||||
*/
|
||||
int lrlglGetMatrixTransform( lua_State *L ) {
|
||||
uluaPushMatrix( L, rlGetMatrixTransform() );
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
/*
|
||||
> projection = RL.rlGetMatrixProjectionStereo( int eye )
|
||||
|
||||
Get internal projection matrix for stereo render (selected eye)
|
||||
|
||||
- Failure return false
|
||||
- Success return Matrix
|
||||
*/
|
||||
int lrlglGetMatrixProjectionStereo( lua_State *L ) {
|
||||
if ( !lua_isnumber( L, 1 ) ) {
|
||||
TraceLog( state->logLevelInvalid, "%s", "Bad call of function. RL.rlGetMatrixProjectionStereo( int eye )" );
|
||||
lua_pushboolean( L, false );
|
||||
return 1;
|
||||
}
|
||||
uluaPushMatrix( L, rlGetMatrixProjectionStereo( lua_tointeger( L, 1 ) ) );
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
/*
|
||||
> viewOffset = RL.rlGetMatrixViewOffsetStereo( int eye )
|
||||
|
||||
Get internal view offset matrix for stereo render (selected eye)
|
||||
|
||||
- Failure return false
|
||||
- Success return Matrix
|
||||
*/
|
||||
int lrlglGetMatrixViewOffsetStereo( lua_State *L ) {
|
||||
if ( !lua_isnumber( L, 1 ) ) {
|
||||
TraceLog( state->logLevelInvalid, "%s", "Bad call of function. RL.rlGetMatrixViewOffsetStereo( int eye )" );
|
||||
lua_pushboolean( L, false );
|
||||
return 1;
|
||||
}
|
||||
uluaPushMatrix( L, rlGetMatrixViewOffsetStereo( lua_tointeger( L, 1 ) ) );
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
/*
|
||||
> success = RL.rlSetMatrixProjection( Matrix proj )
|
||||
|
||||
Set a custom projection matrix (replaces internal projection matrix)
|
||||
|
||||
- Failure return false
|
||||
- Success return true
|
||||
*/
|
||||
int lrlglSetMatrixProjection( lua_State *L ) {
|
||||
if ( !lua_istable( L, 1 ) ) {
|
||||
TraceLog( state->logLevelInvalid, "%s", "Bad call of function. RL.rlSetMatrixProjection( Matrix proj )" );
|
||||
lua_pushboolean( L, false );
|
||||
return 1;
|
||||
}
|
||||
rlSetMatrixProjection( uluaGetMatrixIndex( L, 1 ) );
|
||||
lua_pushboolean( L, true );
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
/*
|
||||
> success = RL.rlSetMatrixModelview( Matrix view )
|
||||
|
||||
Set a custom modelview matrix (replaces internal modelview matrix)
|
||||
|
||||
- Failure return false
|
||||
- Success return true
|
||||
*/
|
||||
int lrlglSetMatrixModelview( lua_State *L ) {
|
||||
if ( !lua_istable( L, 1 ) ) {
|
||||
TraceLog( state->logLevelInvalid, "%s", "Bad call of function. RL.rlSetMatrixModelview( Matrix view )" );
|
||||
lua_pushboolean( L, false );
|
||||
return 1;
|
||||
}
|
||||
rlSetMatrixModelview( uluaGetMatrixIndex( L, 1 ) );
|
||||
lua_pushboolean( L, true );
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
/*
|
||||
> success = RL.rlSetMatrixProjectionStereo( Matrix right, Matrix left )
|
||||
|
||||
Set eyes projection matrices for stereo rendering
|
||||
|
||||
- Failure return false
|
||||
- Success return true
|
||||
*/
|
||||
int lrlglSetMatrixProjectionStereo( lua_State *L ) {
|
||||
if ( !lua_istable( L, 1 ) || !lua_istable( L, 2 ) ) {
|
||||
TraceLog( state->logLevelInvalid, "%s", "Bad call of function. RL.rlSetMatrixModelview( Matrix right, Matrix left )" );
|
||||
lua_pushboolean( L, false );
|
||||
return 1;
|
||||
}
|
||||
rlSetMatrixProjectionStereo( uluaGetMatrixIndex( L, 1 ), uluaGetMatrixIndex( L, 2 ) );
|
||||
lua_pushboolean( L, true );
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
/*
|
||||
> success = RL.rlSetMatrixViewOffsetStereo( Matrix right, Matrix left )
|
||||
|
||||
Set eyes view offsets matrices for stereo rendering
|
||||
|
||||
- Failure return false
|
||||
- Success return true
|
||||
*/
|
||||
int lrlglSetMatrixViewOffsetStereo( lua_State *L ) {
|
||||
if ( !lua_istable( L, 1 ) || !lua_istable( L, 2 ) ) {
|
||||
TraceLog( state->logLevelInvalid, "%s", "Bad call of function. RL.rlSetMatrixViewOffsetStereo( Matrix right, Matrix left )" );
|
||||
lua_pushboolean( L, false );
|
||||
return 1;
|
||||
}
|
||||
rlSetMatrixViewOffsetStereo( uluaGetMatrixIndex( L, 1 ), uluaGetMatrixIndex( L, 2 ) );
|
||||
lua_pushboolean( L, true );
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user