|
|
- /*******************************************************************************************
- *
- * 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;
- }
|