EXPOSE_API_SYMBOLS, SetShaderValueWithBuffer and SetShaderValueVWithBuffer.

This commit is contained in:
jussi
2024-12-10 21:50:10 +02:00
parent cb2b0e4dff
commit cdb719b239
19 changed files with 232 additions and 130 deletions

36
API.md
View File

@@ -2782,7 +2782,7 @@ Default projection matrix near cull distance
---
> RL_CULL_DISTANCE_FAR = 1000.0
> RL_CULL_DISTANCE_FAR = 1000
Default projection matrix far cull distance
@@ -4250,7 +4250,7 @@ NOTE: Set nil if no shader
---
> isReady = RL.IsShaderValid( Shader shader )
> isValid = RL.IsShaderValid( Shader shader )
Check if a shader is valid (loaded on GPU)
@@ -4322,6 +4322,18 @@ NOTE: Even one value should be in table
---
> RL.SetShaderValueWithBuffer( Shader shader, int locIndex, Buffer values, int uniformType )
Set shader uniform value using Buffer object
---
> RL.SetShaderValueVWithBuffer( Shader shader, int locIndex, Buffer values, int uniformType, int count )
Set shader uniform value vector using Buffer object
---
> RL.UnloadShader( Shader shader )
Unload shader from GPU memory (VRAM)
@@ -6134,7 +6146,7 @@ Load image from screen buffer and (screenshot)
---
> isReady = RL.IsImageValid( Image image )
> isValid = RL.IsImageValid( Image image )
Check if an image is valid (data and parameters)
@@ -6671,7 +6683,7 @@ Load RenderTexture from data (framebuffer)
---
> isReady = RL.IsTextureValid( Texture texture )
> isValid = RL.IsTextureValid( Texture texture )
Check if a texture is valid (loaded in GPU)
@@ -6685,7 +6697,7 @@ Unload texture from GPU memory (VRAM)
---
> isReady = RL.IsRenderTextureValid( RenderTexture target )
> isValid = RL.IsRenderTextureValid( RenderTexture target )
Check if a render texture is valid (loaded in GPU)
@@ -7021,7 +7033,7 @@ Load font copy as new userdata
---
> isReady = RL.IsFontValid( Font font )
> isValid = RL.IsFontValid( Font font )
Check if a font is valid (font data loaded, WARNING: GPU texture not checked)
@@ -7578,7 +7590,7 @@ Load model from generated mesh (Default material)
---
> isReady = RL.IsModelValid( Model model )
> isValid = RL.IsModelValid( Model model )
Check if a model is valid (loaded in GPU, VAO/VBOs)
@@ -7993,7 +8005,7 @@ Load material from table. See material table definition
---
> isReady = RL.IsMaterialValid( Material material )
> isValid = RL.IsMaterialValid( Material material )
Check if a material is valid (shader assigned, map textures loaded in GPU)
@@ -8294,7 +8306,7 @@ Set master volume (listener)
---
> isReady = RL.GetMasterVolume()
> volume = RL.GetMasterVolume()
Get master volume (listener)
@@ -8332,7 +8344,7 @@ Load wave from memory buffer, fileType refers to extension: i.e. '.wav'
---
> isReady = RL.IsWaveValid( Wave wave )
> isValid = RL.IsWaveValid( Wave wave )
Checks if wave data is valid (data loaded and parameters)
@@ -8356,7 +8368,7 @@ Create a new sound that shares the same sample data as the source sound, does no
---
> isReady = RL.IsSoundValid( Sound sound )
> isValid = RL.IsSoundValid( Sound sound )
Checks if a sound is valid (data loaded and buffers initialized)
@@ -8506,7 +8518,7 @@ Load music stream from data
---
> isReady = RL.IsMusicValid( Music music )
> isValid = RL.IsMusicValid( Music music )
Checks if a music stream is valid (context and buffers initialized)

View File

@@ -13,7 +13,8 @@ set( CMAKE_C_STANDARD 99 ) # Requires C99 standard
option( SHARED "Build using dynamic libraries." off )
option( LUAJIT "Use LuaJIT." off )
option( LUA_EVENTS "Enable Lua event callbacks (RL.event)." off )
option( DYNAMIC_SYMBOLS "Expose dynamic symbols with rdynamic." off )
option( DYNAMIC_SYMBOLS "Expose all dynamic symbols with rdynamic." off )
option( EXPOSE_API_SYMBOLS "Expose dynamic symbols only for get and push functions of variable types." off )
enum_option( PLATFORM "Desktop;Desktop_SDL;Web" "Platform to build for." )
@@ -61,6 +62,7 @@ else() # Desktop
target_link_libraries( ${PROJECT_NAME} raylib )
if( LUAJIT )
set( CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -DLUAJIT" )
target_link_libraries( ${PROJECT_NAME} luajit )
else()
target_link_libraries( ${PROJECT_NAME} lua )
@@ -80,6 +82,10 @@ else() # Desktop
if( UNIX )
set( CMAKE_C_COMPILER "gcc" )
if( EXPOSE_API_SYMBOLS )
set( CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -DEXPOSE_LUA_API_SYMBOLS -rdynamic -fvisibility=hidden" )
endif()
if ( PLATFORM MATCHES "Desktop_SDL" )
include( FindPkgConfig )
pkg_search_module( SDL2 REQUIRED sdl2 )
@@ -87,29 +93,34 @@ else() # Desktop
target_link_libraries( ${PROJECT_NAME} ${SDL2_LIBRARIES} )
endif()
if( DRM ) # For Raspberry Pi
if( DRM ) # For Raspberry Pi.
# target_link_libraries( ${PROJECT_NAME} GLESv2 EGL drm gbm rt bcm_host m dl pthread )
# target_link_libraries( ${PROJECT_NAME} GLESv2 EGL drm gbm pthread rt m dl )
target_link_libraries( ${PROJECT_NAME} raylib GLESv2 EGL pthread rt m gbm drm dl atomic )
else()
target_link_libraries( ${PROJECT_NAME} m dl pthread )
# target_link_libraries( ${PROJECT_NAME} m dl pthread )
target_link_libraries( ${PROJECT_NAME} m dl pthread glfw )
endif()
elseif( APPLE )
set( CMAKE_C_COMPILER "clang" )
# TODO Linking to sdl2.
# //TODO Linking to sdl2.
target_link_libraries( ${PROJECT_NAME} "-framework IOKit" )
target_link_libraries( ${PROJECT_NAME} "-framework Cocoa" )
target_link_libraries( ${PROJECT_NAME} "-framework OpenGL" )
elseif( WIN32 )
if( EXPOSE_API_SYMBOLS )
set( CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -DEXPOSE_LUA_API_SYMBOLS" )
endif()
if ( PLATFORM MATCHES "Desktop_SDL" )
find_package( SDL2 REQUIRED )
include_directories( ${SDL2_INCLUDE_DIRS} )
target_link_libraries( ${PROJECT_NAME} ${SDL2MAIN_LIBRARIES} )
target_link_libraries( ${PROJECT_NAME} ${SDL2_LIBRARIES} )
endif()
# Remove this to get console.
# Remove this to get console. //TODO Could be build option.
set( CMAKE_C_FLAGS ${CMAKE_C_FLAGS} "-mwindows" )
target_link_libraries( ${PROJECT_NAME} mingw32 opengl32 gdi32 winmm )
endif()

View File

@@ -944,7 +944,7 @@ RL.RL_MAX_SHADER_LOCATIONS=32
---Default projection matrix near cull distance
RL.RL_CULL_DISTANCE_NEAR=0.01
---Default projection matrix far cull distance
RL.RL_CULL_DISTANCE_FAR=1000.0
RL.RL_CULL_DISTANCE_FAR=1000
-- Defines - RLGL Texture parameters
@@ -1671,7 +1671,7 @@ function RL.LoadShaderFromMemory( vsCode, fsCode ) end
---Check if a shader is valid (loaded on GPU)
---- Success return bool
---@param shader any
---@return any isReady
---@return any isValid
function RL.IsShaderValid( shader ) end
---Get shader program id
@@ -1741,6 +1741,23 @@ function RL.SetShaderValue( shader, locIndex, values, uniformType ) end
---@return any RL.SetShaderValueV
function RL.SetShaderValueV( shader, locIndex, values, uniformType, count ) end
---Set shader uniform value using Buffer object
---@param shader any
---@param locIndex integer
---@param values any
---@param uniformType integer
---@return any RL.SetShaderValueWithBuffer
function RL.SetShaderValueWithBuffer( shader, locIndex, values, uniformType ) end
---Set shader uniform value vector using Buffer object
---@param shader any
---@param locIndex integer
---@param values any
---@param uniformType integer
---@param count integer
---@return any RL.SetShaderValueVWithBuffer
function RL.SetShaderValueVWithBuffer( shader, locIndex, values, uniformType, count ) end
---Unload shader from GPU memory (VRAM)
---@param shader any
---@return any RL.UnloadShader
@@ -3339,7 +3356,7 @@ function RL.LoadImageFromScreen() end
---Check if an image is valid (data and parameters)
---- Success return bool
---@param image any
---@return any isReady
---@return any isValid
function RL.IsImageValid( image ) end
---Unload image from CPU memory (RAM)
@@ -3864,7 +3881,7 @@ function RL.LoadRenderTextureFromData( renderTextureData ) end
---Check if a texture is valid (loaded in GPU)
---- Success return bool
---@param texture any
---@return any isReady
---@return any isValid
function RL.IsTextureValid( texture ) end
---Unload texture from GPU memory (VRAM)
@@ -3875,7 +3892,7 @@ function RL.UnloadTexture( texture ) end
---Check if a render texture is valid (loaded in GPU)
---- Success return bool
---@param target any
---@return any isReady
---@return any isValid
function RL.IsRenderTextureValid( target ) end
---Unload render texture from GPU memory (VRAM)
@@ -4177,7 +4194,7 @@ function RL.FontCopy( font ) end
---Check if a font is valid (font data loaded, WARNING: GPU texture not checked)
---- Success return bool
---@param font any
---@return any isReady
---@return any isValid
function RL.IsFontValid( font ) end
---Load font data for further use. NOTE: fileData type should be unsigned char
@@ -4748,7 +4765,7 @@ function RL.LoadModelFromMesh( mesh ) end
---Check if a model is valid (loaded in GPU, VAO/VBOs)
---- Success return bool
---@param model any
---@return any isReady
---@return any isValid
function RL.IsModelValid( model ) end
---Unload model (meshes/materials) from memory (RAM and/or VRAM)
@@ -5152,7 +5169,7 @@ function RL.CreateMaterial( materialData ) end
---Check if a material is valid (shader assigned, map textures loaded in GPU)
---- Success return bool
---@param material any
---@return any isReady
---@return any isValid
function RL.IsMaterialValid( material ) end
---Unload material from GPU memory (VRAM). Note! Use freeAll to unload shaders and textures
@@ -5426,7 +5443,7 @@ function RL.SetMasterVolume( volume ) end
---Get master volume (listener)
---- Success return float
---@return any isReady
---@return any volume
function RL.GetMasterVolume() end
-- Audio - Wave/Sound loading/unloading functions
@@ -5455,7 +5472,7 @@ function RL.LoadWaveFromMemory( fileType, data ) end
---Checks if wave data is valid (data loaded and parameters)
---- Success return bool
---@param wave any
---@return any isReady
---@return any isValid
function RL.IsWaveValid( wave ) end
---Load sound from wave data
@@ -5473,7 +5490,7 @@ function RL.LoadSoundAlias( source ) end
---Checks if a sound is valid (data loaded and buffers initialized)
---- Success return bool
---@param sound any
---@return any isReady
---@return any isValid
function RL.IsSoundValid( sound ) end
---Update sound buffer with new data
@@ -5603,7 +5620,7 @@ function RL.LoadMusicStreamFromMemory( fileType, data ) end
---Checks if a music stream is valid (context and buffers initialized)
---- Success return bool
---@param music any
---@return any isReady
---@return any isValid
function RL.IsMusicValid( music ) end
---Unload music stream

View File

@@ -27,6 +27,8 @@ DETAILED CHANGES:
- ADDED: InitWindow. Can be called from RL.config. If not, will be called automatically before RL.init.
(Curiously InitWindow is function #1057. Before that it was only called automatically.)
- ADDED: WindowShouldClose and custom main loop example.
- ADDED: EXPOSE_API_SYMBOLS.
- ADDED: SetShaderValueWithBuffer and SetShaderValueVWithBuffer.
------------------------------------------------------------------------
Release: ReiLua version 0.8.0 Using Raylib 5.0 and Forked Raygui 4.0

View File

@@ -1,5 +1,4 @@
Current {
* Setup callback.
}
Backlog {
@@ -18,6 +17,7 @@ Backlog {
* Audio
* AudioStream.
* Models
* Material mapType range checks.
* Mesh bone weight management?
* CBuffer
* Swap endianess.

View File

@@ -1,9 +1,9 @@
package.path = package.path..";"..RL.GetBasePath().."../resources/lib/?.lua"
Vec2 = require "vector2"
Vector2 = require "vector2"
-- Settings.
local winSize = Vec2:new( 800, 600 )
local winSize = Vector2:new( 800, 600 )
local monitor = 0
-- Constants.
@@ -12,19 +12,19 @@ local BALL_SPEED = 330 -- Pixels per second.
-- Game objects.
local playerLeft = {
pos = Vec2:new( 0, 0 ),
size = Vec2:new( 10, 70 ),
pos = Vector2:new( 0, 0 ),
size = Vector2:new( 10, 70 ),
score = 0,
}
local playerRight = {
pos = Vec2:new( 0, 0 ),
size = Vec2:new( 10, 70 ),
pos = Vector2:new( 0, 0 ),
size = Vector2:new( 10, 70 ),
score = 0,
}
local ball = {
pos = Vec2:new( 0, 0 ),
pos = Vector2:new( 0, 0 ),
radius = 8.0,
vel = Vec2:new( 0, 0 ),
vel = Vector2:new( 0, 0 ),
}
local function reset()
@@ -54,8 +54,8 @@ end
function RL.init()
-- Set window to center of monitor.
local mPos = Vec2:newT( RL.GetMonitorPosition( monitor ) )
local mSize = Vec2:newT( RL.GetMonitorSize( monitor ) )
local mPos = Vector2:newT( RL.GetMonitorPosition( monitor ) )
local mSize = Vector2:newT( RL.GetMonitorSize( monitor ) )
RL.SetConfigFlags( RL.FLAG_VSYNC_HINT )
RL.SetWindowSize( winSize )
@@ -125,6 +125,6 @@ function RL.draw()
-- Draw score.
RL.DrawText( tostring( playerLeft.score ), { 50, 10 }, 40, RL.WHITE )
local rightTextSize = Vec2:newT( RL.MeasureTextEx( RL.GetFontDefault(), tostring( playerRight.score ), 40, 2 ) )
local rightTextSize = Vector2:newT( RL.MeasureTextEx( RL.GetFontDefault(), tostring( playerRight.score ), 40, 2 ) )
RL.DrawText( tostring( playerRight.score ), { winSize.x - 50 - rightTextSize.x, 10 }, 40, RL.WHITE )
end

View File

@@ -164,7 +164,7 @@ function Vector2:lineAngle( v2 )
end
function Vector2:atan2()
return math.atan( self.y, self.x )
return math.atan2 and math.atan2( self.y, self.x ) or math.atan( self.y, self.x )
end
function Vector2:scale( scale )

View File

@@ -1,7 +1,7 @@
local monitor = 0
local shader = -1
local texture = -1
local textureSize
local shader = nil
local texture = nil
local textureSize = nil
local GLSL_VERSION = "330" -- PLATFORM_DESKTOP
-- local GLSL_VERSION = "100" -- PLATFORM_RPI, PLATFORM_ANDROID, PLATFORM_WEB

View File

@@ -114,7 +114,7 @@ local function moveSnake()
snake.heading:set( snake.control.x, snake.control.y )
snake.headPos:set( snake.headPos.x + snake.heading.x, snake.headPos.y + snake.heading.y )
-- Check appple eating.
-- Check apple eating.
if snake.headPos == applePos then
snake.grow = snake.grow + 1
setApplePos()

View File

@@ -85,6 +85,8 @@ int lcoreSetShaderValueMatrix( lua_State* L );
int lcoreSetShaderValueTexture( lua_State* L );
int lcoreSetShaderValue( lua_State* L );
int lcoreSetShaderValueV( lua_State* L );
int lcoreSetShaderValueWithBuffer( lua_State* L );
int lcoreSetShaderValueVWithBuffer( lua_State* L );
int lcoreUnloadShader( lua_State* L );
/* Screen-space-related functions. */
int lcoreGetScreenToWorldRay( lua_State* L );

View File

@@ -1,5 +1,27 @@
#pragma once
// Function specifiers in case library is build/used as a shared library
// NOTE: Microsoft specifiers to tell compiler that symbols are imported/exported from a .dll
// NOTE: visibility("default") attribute makes symbols "visible" when compiled with -fvisibility=hidden
#if defined( _WIN32 )
#if defined( __TINYC__ )
#define __declspec(x) __attribute__( (x) )
#endif
#if defined( EXPOSE_API_SYMBOLS )
#define REILUAPI __declspec( dllexport ) // We are building the library as a Win32 shared library (.dll)
#elif defined( USE_LIBTYPE_SHARED )
#define REILUAPI __declspec( dllimport ) // We are using the library as a Win32 shared library (.dll)
#endif
#else
#if defined( EXPOSE_API_SYMBOLS )
#define REILUAPI __attribute__( ( visibility( "default" ) ) ) // We are building as a Unix shared library (.so/.dylib)
#endif
#endif
#ifndef REILUAPI
#define REILUAPI // Functions defined as 'extern' by default (implicit specifiers)
#endif
enum BufferType {
BUFFER_UNSIGNED_CHAR,
BUFFER_UNSIGNED_SHORT,
@@ -35,75 +57,75 @@ void luaRegister();
void platformDefineGlobals();
void luaPlatformRegister();
/* Lua get types. */
bool uluaGetBoolean( lua_State* L, int index );
Color uluaGetColor( lua_State* L, int index );
Vector2 uluaGetVector2( lua_State* L, int index );
Vector3 uluaGetVector3( lua_State* L, int index );
Vector4 uluaGetVector4( lua_State* L, int index );
Rectangle uluaGetRectangle( lua_State* L, int index );
Quaternion uluaGetQuaternion( lua_State* L, int index );
Matrix uluaGetMatrix( lua_State* L, int index );
BoundingBox uluaGetBoundingBox( lua_State* L, int index );
Ray uluaGetRay( lua_State* L, int index );
NPatchInfo uluaGetNPatchInfo( lua_State* L, int index );
BoneInfo uluaGetBoneInfo( lua_State* L, int index );
Transform uluaGetTransform( lua_State* L, int index );
Buffer* uluaGetBuffer( lua_State* L, int index );
Image* uluaGetImage( lua_State* L, int index );
Texture* uluaGetTexture( lua_State* L, int index );
RenderTexture* uluaGetRenderTexture( lua_State* L, int index );
Shader* uluaGetShader( lua_State* L, int index );
Mesh* uluaGetMesh( lua_State* L, int index );
Camera2D* uluaGetCamera2D( lua_State* L, int index );
Camera3D* uluaGetCamera3D( lua_State* L, int index );
Font* uluaGetFont( lua_State* L, int index );
GlyphInfo* uluaGetGlyphInfo( lua_State* L, int index );
Wave* uluaGetWave( lua_State* L, int index );
Sound* uluaGetSound( lua_State* L, int index );
Music* uluaGetMusic( lua_State* L, int index );
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 );
AutomationEvent* uluaGetAutomationEvent( lua_State* L, int index );
AutomationEventList* uluaGetAutomationEventList( lua_State* L, int index );
REILUAPI bool uluaGetBoolean( lua_State* L, int index );
REILUAPI Color uluaGetColor( lua_State* L, int index );
REILUAPI Vector2 uluaGetVector2( lua_State* L, int index );
REILUAPI Vector3 uluaGetVector3( lua_State* L, int index );
REILUAPI Vector4 uluaGetVector4( lua_State* L, int index );
REILUAPI Rectangle uluaGetRectangle( lua_State* L, int index );
REILUAPI Quaternion uluaGetQuaternion( lua_State* L, int index );
REILUAPI Matrix uluaGetMatrix( lua_State* L, int index );
REILUAPI BoundingBox uluaGetBoundingBox( lua_State* L, int index );
REILUAPI Ray uluaGetRay( lua_State* L, int index );
REILUAPI NPatchInfo uluaGetNPatchInfo( lua_State* L, int index );
REILUAPI BoneInfo uluaGetBoneInfo( lua_State* L, int index );
REILUAPI Transform uluaGetTransform( lua_State* L, int index );
REILUAPI Buffer* uluaGetBuffer( lua_State* L, int index );
REILUAPI Image* uluaGetImage( lua_State* L, int index );
REILUAPI Texture* uluaGetTexture( lua_State* L, int index );
REILUAPI RenderTexture* uluaGetRenderTexture( lua_State* L, int index );
REILUAPI Shader* uluaGetShader( lua_State* L, int index );
REILUAPI Mesh* uluaGetMesh( lua_State* L, int index );
REILUAPI Camera2D* uluaGetCamera2D( lua_State* L, int index );
REILUAPI Camera3D* uluaGetCamera3D( lua_State* L, int index );
REILUAPI Font* uluaGetFont( lua_State* L, int index );
REILUAPI GlyphInfo* uluaGetGlyphInfo( lua_State* L, int index );
REILUAPI Wave* uluaGetWave( lua_State* L, int index );
REILUAPI Sound* uluaGetSound( lua_State* L, int index );
REILUAPI Music* uluaGetMusic( lua_State* L, int index );
REILUAPI Light* uluaGetLight( lua_State* L, int index );
REILUAPI Material* uluaGetMaterial( lua_State* L, int index );
REILUAPI Model* uluaGetModel( lua_State* L, int index );
REILUAPI ModelAnimation* uluaGetModelAnimation( lua_State* L, int index );
REILUAPI rlRenderBatch* uluaGetRLRenderBatch( lua_State* L, int index );
REILUAPI AutomationEvent* uluaGetAutomationEvent( lua_State* L, int index );
REILUAPI AutomationEventList* uluaGetAutomationEventList( lua_State* L, int index );
void getVector2Array( lua_State* L, int index, Vector2 points[] );
REILUAPI void getVector2Array( lua_State* L, int index, Vector2 points[] );
/* Lua push types. */
void uluaPushColor( lua_State* L, Color color );
void uluaPushVector2( lua_State* L, Vector2 vector );
void uluaPushVector3( lua_State* L, Vector3 vector );
void uluaPushVector4( lua_State* L, Vector4 vector );
void uluaPushRectangle( lua_State* L, Rectangle rect );
void uluaPushQuaternion( lua_State* L, Quaternion quaternion );
void uluaPushMatrix( lua_State* L, Matrix matrix );
void uluaPushRay( lua_State* L, Ray ray );
void uluaPushRayCollision( lua_State* L, RayCollision rayCol );
void uluaPushBoundingBox( lua_State* L, BoundingBox box );
void uluaPushBoneInfo( lua_State* L, BoneInfo boneInfo );
void uluaPushTransform( lua_State* L, Transform transform );
REILUAPI void uluaPushColor( lua_State* L, Color color );
REILUAPI void uluaPushVector2( lua_State* L, Vector2 vector );
REILUAPI void uluaPushVector3( lua_State* L, Vector3 vector );
REILUAPI void uluaPushVector4( lua_State* L, Vector4 vector );
REILUAPI void uluaPushRectangle( lua_State* L, Rectangle rect );
REILUAPI void uluaPushQuaternion( lua_State* L, Quaternion quaternion );
REILUAPI void uluaPushMatrix( lua_State* L, Matrix matrix );
REILUAPI void uluaPushRay( lua_State* L, Ray ray );
REILUAPI void uluaPushRayCollision( lua_State* L, RayCollision rayCol );
REILUAPI void uluaPushBoundingBox( lua_State* L, BoundingBox box );
REILUAPI void uluaPushBoneInfo( lua_State* L, BoneInfo boneInfo );
REILUAPI void uluaPushTransform( lua_State* L, Transform transform );
// void uluaPushAutomationEvent( lua_State* L, AutomationEvent event );
void uluaPushBuffer( lua_State* L, Buffer buffer );
void uluaPushImage( lua_State* L, Image image );
void uluaPushTexture( lua_State* L, Texture texture );
void uluaPushRenderTexture( lua_State* L, RenderTexture renderTexture );
void uluaPushCamera2D( lua_State* L, Camera2D camera );
void uluaPushCamera3D( lua_State* L, Camera3D camera );
void uluaPushShader( lua_State* L, Shader shader );
void uluaPushFont( lua_State* L, Font font );
void uluaPushGlyphInfo( lua_State* L, GlyphInfo glyph );
void uluaPushWave( lua_State* L, Wave wave );
void uluaPushSound( lua_State* L, Sound sound );
void uluaPushMusic( lua_State* L, Music music );
void uluaPushLight( lua_State* L, Light light );
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 );
void uluaPushAutomationEvent( lua_State* L, AutomationEvent event );
void uluaPushAutomationEventList( lua_State* L, AutomationEventList eventList );
REILUAPI void uluaPushBuffer( lua_State* L, Buffer buffer );
REILUAPI void uluaPushImage( lua_State* L, Image image );
REILUAPI void uluaPushTexture( lua_State* L, Texture texture );
REILUAPI void uluaPushRenderTexture( lua_State* L, RenderTexture renderTexture );
REILUAPI void uluaPushCamera2D( lua_State* L, Camera2D camera );
REILUAPI void uluaPushCamera3D( lua_State* L, Camera3D camera );
REILUAPI void uluaPushShader( lua_State* L, Shader shader );
REILUAPI void uluaPushFont( lua_State* L, Font font );
REILUAPI void uluaPushGlyphInfo( lua_State* L, GlyphInfo glyph );
REILUAPI void uluaPushWave( lua_State* L, Wave wave );
REILUAPI void uluaPushSound( lua_State* L, Sound sound );
REILUAPI void uluaPushMusic( lua_State* L, Music music );
REILUAPI void uluaPushLight( lua_State* L, Light light );
REILUAPI void uluaPushMaterial( lua_State* L, Material material );
REILUAPI void uluaPushMesh( lua_State* L, Mesh mesh );
REILUAPI void uluaPushModel( lua_State* L, Model model );
REILUAPI void uluaPushModelAnimation( lua_State* L, ModelAnimation modelAnimation );
REILUAPI void uluaPushRLRenderBatch( lua_State* L, rlRenderBatch renderBatch );
REILUAPI void uluaPushAutomationEvent( lua_State* L, AutomationEvent event );
REILUAPI void uluaPushAutomationEventList( lua_State* L, AutomationEventList eventList );
/* Utils. */
int uluaGetTableLen( lua_State* L, int index );
bool uluaIsNil( lua_State* L, int index );
REILUAPI int uluaGetTableLen( lua_State* L, int index );
REILUAPI bool uluaIsNil( lua_State* L, int index );

View File

@@ -37,7 +37,6 @@
#include "rcamera.h"
#endif
#ifdef LUAJIT
#ifdef SHARED
#include <lua.h>

2
lib/.gitignore vendored
View File

@@ -1,3 +1,5 @@
libraylib.a
liblua.a
libluajit.a
liblua.so
libluajit.so

View File

@@ -56,7 +56,7 @@ int laudioSetMasterVolume( lua_State* L ) {
}
/*
> isReady = RL.GetMasterVolume()
> volume = RL.GetMasterVolume()
Get master volume (listener)
@@ -129,7 +129,7 @@ int laudioLoadWaveFromMemory( lua_State* L ) {
}
/*
> isReady = RL.IsWaveValid( Wave wave )
> isValid = RL.IsWaveValid( Wave wave )
Checks if wave data is valid (data loaded and parameters)
@@ -174,7 +174,7 @@ int laudioLoadSoundAlias( lua_State* L ) {
}
/*
> isReady = RL.IsSoundValid( Sound sound )
> isValid = RL.IsSoundValid( Sound sound )
Checks if a sound is valid (data loaded and buffers initialized)
@@ -497,7 +497,7 @@ int laudioLoadMusicStreamFromMemory( lua_State* L ) {
}
/*
> isReady = RL.IsMusicValid( Music music )
> isValid = RL.IsMusicValid( Music music )
Checks if a music stream is valid (context and buffers initialized)

View File

@@ -932,7 +932,7 @@ int lcoreLoadShaderFromMemory( lua_State* L ) {
}
/*
> isReady = RL.IsShaderValid( Shader shader )
> isValid = RL.IsShaderValid( Shader shader )
Check if a shader is valid (loaded on GPU)
@@ -1137,6 +1137,39 @@ int lcoreSetShaderValueV( lua_State* L ) {
return 0;
}
/*
> RL.SetShaderValueWithBuffer( Shader shader, int locIndex, Buffer values, int uniformType )
Set shader uniform value using Buffer object
*/
int lcoreSetShaderValueWithBuffer( lua_State* L ) {
Shader* shader = uluaGetShader( L, 1 );
int locIndex = luaL_checkinteger( L, 2 );
Buffer* value = uluaGetBuffer( L, 3 );
int uniformType = luaL_checkinteger( L, 4 );
SetShaderValue( *shader, locIndex, value->data, uniformType );
return 0;
}
/*
> RL.SetShaderValueVWithBuffer( Shader shader, int locIndex, Buffer values, int uniformType, int count )
Set shader uniform value vector using Buffer object
*/
int lcoreSetShaderValueVWithBuffer( lua_State* L ) {
Shader* shader = uluaGetShader( L, 1 );
int locIndex = luaL_checkinteger( L, 2 );
Buffer* value = uluaGetBuffer( L, 3 );
int uniformType = luaL_checkinteger( L, 4 );
int count = luaL_checkinteger( L, 5 );
SetShaderValueV( *shader, locIndex, value->data, uniformType, count );
return 0;
}
/*
> RL.UnloadShader( Shader shader )

View File

@@ -1374,6 +1374,8 @@ void luaRegister() {
assingGlobalFunction( "SetShaderValueTexture", lcoreSetShaderValueTexture );
assingGlobalFunction( "SetShaderValue", lcoreSetShaderValue );
assingGlobalFunction( "SetShaderValueV", lcoreSetShaderValueV );
assingGlobalFunction( "SetShaderValueWithBuffer", lcoreSetShaderValueWithBuffer );
assingGlobalFunction( "SetShaderValueVWithBuffer", lcoreSetShaderValueVWithBuffer );
assingGlobalFunction( "UnloadShader", lcoreUnloadShader );
/* Screen-space-related functions. */
assingGlobalFunction( "GetScreenToWorldRay", lcoreGetScreenToWorldRay );
@@ -2962,10 +2964,10 @@ BoneInfo uluaGetBoneInfo( lua_State* L, int index ) {
bone.parent = lua_tointeger( L, -1 );
}
}
}
i++;
lua_pop( L, 1 );
}
}
return bone;
}
@@ -3005,10 +3007,10 @@ Transform uluaGetTransform( lua_State* L, int index ) {
transform.scale = uluaGetVector3( L, lua_gettop( L ) );
}
}
}
i++;
lua_pop( L, 1 );
}
}
return transform;
}

View File

@@ -492,7 +492,7 @@ int lmodelsLoadModelFromMesh( lua_State* L ) {
}
/*
> isReady = RL.IsModelValid( Model model )
> isValid = RL.IsModelValid( Model model )
Check if a model is valid (loaded in GPU, VAO/VBOs)
@@ -1889,7 +1889,7 @@ int lmodelsCreateMaterial( lua_State* L ) {
}
/*
> isReady = RL.IsMaterialValid( Material material )
> isValid = RL.IsMaterialValid( Material material )
Check if a material is valid (shader assigned, map textures loaded in GPU)

View File

@@ -295,7 +295,7 @@ int ltextFontCopy( lua_State* L ) {
}
/*
> isReady = RL.IsFontValid( Font font )
> isValid = RL.IsFontValid( Font font )
Check if a font is valid (font data loaded, WARNING: GPU texture not checked)

View File

@@ -167,7 +167,7 @@ int ltexturesLoadImageFromScreen( lua_State* L ) {
}
/*
> isReady = RL.IsImageValid( Image image )
> isValid = RL.IsImageValid( Image image )
Check if an image is valid (data and parameters)
@@ -1422,7 +1422,7 @@ int ltexturesLoadRenderTextureFromData( lua_State* L ) {
}
/*
> isReady = RL.IsTextureValid( Texture texture )
> isValid = RL.IsTextureValid( Texture texture )
Check if a texture is valid (loaded in GPU)
@@ -1451,7 +1451,7 @@ int ltextureUnloadTexture( lua_State* L ) {
}
/*
> isReady = RL.IsRenderTextureValid( RenderTexture target )
> isValid = RL.IsRenderTextureValid( RenderTexture target )
Check if a render texture is valid (loaded in GPU)