UpdateTexture and UpdateTextureRec now take pixel data as Buffer.

This commit is contained in:
jussi
2025-01-31 15:26:20 +02:00
parent c8131ea958
commit 38d41e2457
4 changed files with 11 additions and 64 deletions

6
API.md
View File

@@ -7611,17 +7611,15 @@ Unload render texture from GPU memory (VRAM)
---
> RL.UpdateTexture( Texture texture, int{} pixels )
> RL.UpdateTexture( Texture texture, Buffer pixels )
Update GPU texture with new data
NOTE! Should be TEXTURE_TYPE_TEXTURE. Pixel should be in format { { 255, 255, 255, 255 }... } depending on the pixel format
---
> RL.UpdateTextureRec( Texture texture, Rectangle rec, int{} pixels )
> RL.UpdateTextureRec( Texture texture, Rectangle rec, Buffer pixels )
Update GPU texture rectangle with new data.
Pixel should be in format { { 255, 255, 255, 255 }... } depending on the pixel format
---

View File

@@ -4133,17 +4133,15 @@ function RL.IsRenderTextureValid( target ) end
function RL.UnloadRenderTexture( target ) end
---Update GPU texture with new data
---NOTE! Should be TEXTURE_TYPE_TEXTURE. Pixel should be in format { { 255, 255, 255, 255 }... } depending on the pixel format
---@param texture any
---@param pixels table
---@param pixels any
---@return any RL.UpdateTexture
function RL.UpdateTexture( texture, pixels ) end
---Update GPU texture rectangle with new data.
---Pixel should be in format { { 255, 255, 255, 255 }... } depending on the pixel format
---@param texture any
---@param rec table
---@param pixels table
---@param pixels any
---@return any RL.UpdateTextureRec
function RL.UpdateTextureRec( texture, rec, pixels ) end

View File

@@ -36,6 +36,7 @@ DETAILED CHANGES:
- FIXED: Bitwise functions now use 64 bit integers.
- CHANGE: SetBufferData takes table of values.
- ADDED: Texture atlas repeat example.
- CHANGE: UpdateTexture and UpdateTextureRec now take pixel data as Buffer.
------------------------------------------------------------------------
Release: ReiLua version 0.8.0 Using Raylib 5.0 and Forked Raygui 4.0

View File

@@ -1480,80 +1480,30 @@ int ltextureUnloadRenderTexture( lua_State* L ) {
}
/*
> RL.UpdateTexture( Texture texture, int{} pixels )
> RL.UpdateTexture( Texture texture, Buffer pixels )
Update GPU texture with new data
NOTE! Should be TEXTURE_TYPE_TEXTURE. Pixel should be in format { { 255, 255, 255, 255 }... } depending on the pixel format
*/
int ltexturesUpdateTexture( lua_State* L ) {
Texture* texture = uluaGetTexture( L, 1 );
size_t len = uluaGetTableLen( L, 2 );
Buffer* pixels = uluaGetBuffer( L, 2 );
unsigned char* pixels = malloc( len * 4 * sizeof( unsigned char ) );
int t = lua_gettop( L );
unsigned int i = 0;
lua_pushnil( L );
while ( lua_next( L, t ) != 0 ) {
size_t colLen = uluaGetTableLen( L, lua_gettop( L ) );
int t2 = lua_gettop( L );
unsigned int j = 0;
lua_pushnil( L );
while ( lua_next( L, t2 ) != 0 ) {
*( pixels + ( i * colLen ) + j ) = lua_tointeger( L, -1 );
j++;
lua_pop( L, 1 );
}
i++;
lua_pop( L, 1 );
}
UpdateTexture( *texture, pixels );
free( pixels );
UpdateTexture( *texture, pixels->data );
return 0;
}
/*
> RL.UpdateTextureRec( Texture texture, Rectangle rec, int{} pixels )
> RL.UpdateTextureRec( Texture texture, Rectangle rec, Buffer pixels )
Update GPU texture rectangle with new data.
Pixel should be in format { { 255, 255, 255, 255 }... } depending on the pixel format
*/
int ltexturesUpdateTextureRec( lua_State* L ) {
Texture* texture = uluaGetTexture( L, 1 );
Rectangle rec = uluaGetRectangle( L, 2 );
size_t len = uluaGetTableLen( L, 3 );
Buffer* pixels = uluaGetBuffer( L, 3 );
unsigned char* pixels = malloc( len * 4 * sizeof( unsigned char ) );
int t = lua_gettop( L );
unsigned int i = 0;
lua_pushnil( L );
while ( lua_next( L, t ) != 0 ) {
size_t colLen = uluaGetTableLen( L, lua_gettop( L ) );
int t2 = lua_gettop( L );
unsigned int j = 0;
lua_pushnil( L );
while ( lua_next( L, t2 ) != 0 ) {
*( pixels + ( i * colLen ) + j ) = lua_tointeger( L, -1 );
j++;
lua_pop( L, 1 );
}
i++;
lua_pop( L, 1 );
}
lua_pop( L, 1 ); /* Pixels arg. */
UpdateTextureRec( *texture, rec, pixels );
free( pixels );
UpdateTextureRec( *texture, rec, pixels->data );
return 0;
}