diff options
| author | Ray <raysan5@gmail.com> | 2019-09-12 16:27:58 +0200 |
|---|---|---|
| committer | Ray <raysan5@gmail.com> | 2019-09-12 16:27:58 +0200 |
| commit | c6d2502bdbdcdbbcbf89795e4574dcff26ad9949 (patch) | |
| tree | 7cc786dcfd1ade066ce57e0ff06a96c730fb3f77 | |
| parent | a2fd427224e7e3251c302597d299efd0e47ae6ca (diff) | |
| download | raylib-c6d2502bdbdcdbbcbf89795e4574dcff26ad9949.tar.gz raylib-c6d2502bdbdcdbbcbf89795e4574dcff26ad9949.zip | |
Review example crashing
Note this example is not working properly, it still requires some review.
| -rw-r--r-- | examples/models/models_material_pbr.c | 20 | ||||
| -rw-r--r-- | examples/models/rlights.h | 20 |
2 files changed, 18 insertions, 22 deletions
diff --git a/examples/models/models_material_pbr.c b/examples/models/models_material_pbr.c index 0f896f21..8702f79a 100644 --- a/examples/models/models_material_pbr.c +++ b/examples/models/models_material_pbr.c @@ -52,14 +52,12 @@ int main(void) model.materials[0] = LoadMaterialPBR((Color){ 255, 255, 255, 255 }, 1.0f, 1.0f); - // Define lights attributes - // NOTE: Shader is passed to every light on creation to define shader bindings internally - Light lights[MAX_LIGHTS] = { - CreateLight(LIGHT_POINT, (Vector3){ LIGHT_DISTANCE, LIGHT_HEIGHT, 0.0f }, (Vector3){ 0.0f, 0.0f, 0.0f }, (Color){ 255, 0, 0, 255 }, model.materials[0].shader), - CreateLight(LIGHT_POINT, (Vector3){ 0.0f, LIGHT_HEIGHT, LIGHT_DISTANCE }, (Vector3){ 0.0f, 0.0f, 0.0f }, (Color){ 0, 255, 0, 255 }, model.materials[0].shader), - CreateLight(LIGHT_POINT, (Vector3){ -LIGHT_DISTANCE, LIGHT_HEIGHT, 0.0f }, (Vector3){ 0.0f, 0.0f, 0.0f }, (Color){ 0, 0, 255, 255 }, model.materials[0].shader), - CreateLight(LIGHT_DIRECTIONAL, (Vector3){ 0.0f, LIGHT_HEIGHT*2.0f, -LIGHT_DISTANCE }, (Vector3){ 0.0f, 0.0f, 0.0f }, (Color){ 255, 0, 255, 255 }, model.materials[0].shader) - }; + // Create lights + // NOTE: Lights are added to an internal lights pool automatically + CreateLight(LIGHT_POINT, (Vector3){ LIGHT_DISTANCE, LIGHT_HEIGHT, 0.0f }, (Vector3){ 0.0f, 0.0f, 0.0f }, (Color){ 255, 0, 0, 255 }, model.materials[0].shader); + CreateLight(LIGHT_POINT, (Vector3){ 0.0f, LIGHT_HEIGHT, LIGHT_DISTANCE }, (Vector3){ 0.0f, 0.0f, 0.0f }, (Color){ 0, 255, 0, 255 }, model.materials[0].shader); + CreateLight(LIGHT_POINT, (Vector3){ -LIGHT_DISTANCE, LIGHT_HEIGHT, 0.0f }, (Vector3){ 0.0f, 0.0f, 0.0f }, (Color){ 0, 0, 255, 255 }, model.materials[0].shader); + CreateLight(LIGHT_DIRECTIONAL, (Vector3){ 0.0f, LIGHT_HEIGHT*2.0f, -LIGHT_DISTANCE }, (Vector3){ 0.0f, 0.0f, 0.0f }, (Color){ 255, 0, 255, 255 }, model.materials[0].shader); SetCameraMode(camera, CAMERA_ORBITAL); // Set an orbital camera mode @@ -113,8 +111,8 @@ int main(void) // NOTE: PBR shader is loaded inside this function static Material LoadMaterialPBR(Color albedo, float metalness, float roughness) { - Material mat = { 0 }; // NOTE: All maps textures are set to { 0 } - + Material mat = LoadMaterialDefault(); // Initialize material to default + #if defined(PLATFORM_DESKTOP) mat.shader = LoadShader("resources/shaders/glsl330/pbr.vs", "resources/shaders/glsl330/pbr.fs"); #else // PLATFORM_RPI, PLATFORM_ANDROID, PLATFORM_WEB @@ -136,7 +134,7 @@ static Material LoadMaterialPBR(Color albedo, float metalness, float roughness) // Set view matrix location mat.shader.locs[LOC_MATRIX_MODEL] = GetShaderLocation(mat.shader, "matModel"); - mat.shader.locs[LOC_MATRIX_VIEW] = GetShaderLocation(mat.shader, "view"); + //mat.shader.locs[LOC_MATRIX_VIEW] = GetShaderLocation(mat.shader, "view"); mat.shader.locs[LOC_VECTOR_VIEW] = GetShaderLocation(mat.shader, "viewPos"); // Set PBR standard maps diff --git a/examples/models/rlights.h b/examples/models/rlights.h index 19504473..6593ab4a 100644 --- a/examples/models/rlights.h +++ b/examples/models/rlights.h @@ -33,6 +33,8 @@ #ifndef RLIGHTS_H #define RLIGHTS_H +#include "raylib.h" + //---------------------------------------------------------------------------------- // Defines and Macros //---------------------------------------------------------------------------------- @@ -66,15 +68,10 @@ extern "C" { // Prevents name mangling of functions #endif //---------------------------------------------------------------------------------- -// Global Variables Definition -//---------------------------------------------------------------------------------- -int lightsCount = 0; // Current amount of created lights - -//---------------------------------------------------------------------------------- // Module Functions Declaration //---------------------------------------------------------------------------------- -Light CreateLight(int type, Vector3 pos, Vector3 targ, Color color, Shader shader); // Defines a light and get locations from PBR shader -void UpdateLightValues(Shader shader, Light light); // Send to PBR shader light values +void CreateLight(int type, Vector3 pos, Vector3 targ, Color color, Shader shader); // Defines a light and get locations from PBR shader +void UpdateLightValues(Shader shader, Light light); // Send to PBR shader light values #ifdef __cplusplus } @@ -106,7 +103,8 @@ void UpdateLightValues(Shader shader, Light light); //---------------------------------------------------------------------------------- // Global Variables Definition //---------------------------------------------------------------------------------- -// ... +static Light lights[MAX_LIGHTS] = { 0 }; +static int lightsCount = 0; // Current amount of created lights //---------------------------------------------------------------------------------- // Module specific Functions Declaration @@ -118,7 +116,7 @@ void UpdateLightValues(Shader shader, Light light); //---------------------------------------------------------------------------------- // Defines a light and get locations from PBR shader -Light CreateLight(int type, Vector3 pos, Vector3 targ, Color color, Shader shader) +void CreateLight(int type, Vector3 pos, Vector3 targ, Color color, Shader shader) { Light light = { 0 }; @@ -148,10 +146,10 @@ Light CreateLight(int type, Vector3 pos, Vector3 targ, Color color, Shader shade light.colorLoc = GetShaderLocation(shader, colorName); UpdateLightValues(shader, light); + + lights[lightsCount] = light; lightsCount++; } - - return light; } // Send to PBR shader light values |
