Texture Tiling Example - luis605 (#3353)

* Texture Tiling Example - luis605

* Removed SetTraceLogLevel(LOG_WARNING);
This commit is contained in:
Luís Almeida 2023-10-01 22:01:59 +01:00 committed by GitHub
parent 7351240218
commit bc15c19518
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 108 additions and 0 deletions

View File

@ -0,0 +1,14 @@
#version 330 core
uniform sampler2D diffuseMap;
uniform vec2 tiling;
in vec2 fragTexCoord;
out vec4 fragColor;
void main()
{
vec2 texCoord = fragTexCoord * tiling;
fragColor = texture(diffuseMap, texCoord);
}

View File

@ -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;
}