-
-
Notifications
You must be signed in to change notification settings - Fork 2.4k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Texture Tiling Example - luis605 (#3353)
* Texture Tiling Example - luis605 * Removed SetTraceLogLevel(LOG_WARNING);
- Loading branch information
Showing
2 changed files
with
108 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -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); | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -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; | ||
} |