aboutsummaryrefslogtreecommitdiff
path: root/raylib/examples/shaders/shader_texture_tiling.c
diff options
context:
space:
mode:
authorUneven Prankster <unevenprankster@protonmail.com>2023-10-15 21:28:29 -0300
committerUneven Prankster <unevenprankster@protonmail.com>2023-10-15 21:28:29 -0300
commit1c0cc775732201f4c4d3ee0d6772be786b3b4aa1 (patch)
treef5d692d046868261275c7430a624c3ea9ed75d3d /raylib/examples/shaders/shader_texture_tiling.c
parenta89f892640cf12f75c7ce18e6e88c70a8d3965ed (diff)
A lot has certainly happened!
Diffstat (limited to 'raylib/examples/shaders/shader_texture_tiling.c')
-rw-r--r--raylib/examples/shaders/shader_texture_tiling.c94
1 files changed, 94 insertions, 0 deletions
diff --git a/raylib/examples/shaders/shader_texture_tiling.c b/raylib/examples/shaders/shader_texture_tiling.c
new file mode 100644
index 0000000..868d6b8
--- /dev/null
+++ b/raylib/examples/shaders/shader_texture_tiling.c
@@ -0,0 +1,94 @@
+/*******************************************************************************************
+*
+* raylib [textures] example - Texture Tiling
+*
+* Example demonstrates how to tile a texture on a 3D model using raylib.
+*
+* Example contributed by Luís Almeida (https://github.com/luis605)
+*
+* Example licensed under an unmodified zlib/libpng license, which is an OSI-certified,
+* BSD-like license that allows static linking with closed source software
+*
+* Copyright (c) 2023 Luís Almeida (https://github.com/luis605)
+*
+********************************************************************************************/
+
+#include "raylib.h"
+
+//------------------------------------------------------------------------------------
+// Program main entry point
+//------------------------------------------------------------------------------------
+
+int main(void)
+{
+ const int screenWidth = 800;
+ const int screenHeight = 600;
+
+ // Initialization
+ //--------------------------------------------------------------------------------------
+ InitWindow(screenWidth, screenHeight, "Raylib Texture Tiling");
+
+ SetTargetFPS(60);
+
+ // Load a texture
+ Texture2D texture = LoadTexture("resources/raylib_logo.png");
+
+ // Create a cube mesh
+ Mesh cube = GenMeshCube(1.0f, 1.0f, 1.0f);
+
+ // Load the texture onto the GPU
+ Model model = LoadModelFromMesh(cube);
+ model.materials[0].maps[MATERIAL_MAP_DIFFUSE].texture = texture;
+
+ // Set the tiling of the texture
+ float tiling[2] = {3.0f, 3.0f};
+ Shader shader = LoadShader(0, "resources/shaders/glsl330/tiling.fs"); // Create a custom shader in a .glsl file
+ SetShaderValue(shader, GetShaderLocation(shader, "tiling"), tiling, SHADER_UNIFORM_VEC2);
+ model.materials[0].shader = shader;
+
+ // Camera setup
+ Camera camera = { 0 };
+ camera.position = (Vector3){ 3.0f, 3.0f, 3.0f };
+ camera.target = (Vector3){ 0.0f, 0.0f, 0.0f };
+ camera.up = (Vector3){ 0.0f, 1.0f, 0.0f };
+ camera.fovy = 45.0f;
+ camera.projection = CAMERA_PERSPECTIVE;
+
+ // Main game loop
+ while (!WindowShouldClose())
+ {
+ // Update
+ //----------------------------------------------------------------------------------
+
+ BeginDrawing();
+ ClearBackground(RAYWHITE);
+ UpdateCamera(&camera, CAMERA_FREE);
+
+ // Draw the model
+ {
+ BeginMode3D(camera);
+ BeginShaderMode(shader);
+
+ DrawModel(model, (Vector3){ 0.0f, 0.0f, 0.0f }, 5.0f, WHITE);
+
+ EndShaderMode();
+ EndMode3D();
+ }
+
+ DrawText("Use mouse to rotate the camera", 10, 10, 20, DARKGRAY);
+
+ EndDrawing();
+ }
+
+ // De-Initialization
+ //--------------------------------------------------------------------------------------
+
+ UnloadTexture(texture); // Unload texture
+ UnloadModel(model); // Unload model
+ UnloadShader(shader); // Unload shader
+
+
+ CloseWindow(); // Close window and OpenGL context
+
+ return 0;
+}