From 0b03431c95c3c348aa686c1a3df68a51bd7761a6 Mon Sep 17 00:00:00 2001 From: raysan5 Date: Wed, 23 Jul 2014 00:06:24 +0200 Subject: [PATCH] Update to version 1.1.1 Check CHANGELOG for a detailed list of changes --- CHANGELOG | 19 +- HELPME.md | 2 +- README.md | 4 +- ROADMAP.md | 2 +- examples/ex07b_3d_shapes.c | 2 +- release/win32-mingw/include/raylib.h | 9 +- release/win32-mingw/lib/libraylib.a | Bin 302680 -> 279998 bytes src/core.c | 147 ++++++- src/models.c | 593 ++++++++++++++++++++------- src/raylib.h | 7 +- src/rlgl.c | 260 +++++------- src/rlgl.h | 2 +- src/text.c | 4 +- src/textures.c | 40 +- tests/resources/cubesmap.png | Bin 0 -> 173 bytes tests/test_cubesmap.c | 83 ++++ tests/test_heightmap.c | 8 +- 17 files changed, 851 insertions(+), 331 deletions(-) create mode 100644 tests/resources/cubesmap.png create mode 100644 tests/test_cubesmap.c diff --git a/CHANGELOG b/CHANGELOG index c8bd40122..9c7242bc0 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -1,11 +1,28 @@ changelog --------- -Current Release: raylib 1.1.0 (April 2014) +Current Release: raylib 1.1.1 (22 July 2014) NOTE: Only versions marked as 'Release' are available on release folder, updates are only available as source. NOTE: Current Release includes all previous updates. +----------------------------------------------- +Release: raylib 1.1.1 (22 July 2014) +----------------------------------------------- +[core] ShowLogo() - To enable raylib logo animation at startup +[core] Corrected bug with window resizing +[rlgl] Redefined colors arrays to use byte instead of float +[rlgl] Removed double buffer system (no performance improvement) +[rlgl] rlglDraw() - Reorganized buffers drawing order +[rlgl] Corrected bug on screen resizing +[models] DrawSphereWires() - Corrected some issues +[models] LoadOBJ() - Redesigned to support multiple meshes +[models] LoadCubesMap() - Loading a map as cubes (by pixel color) +[textures] Added security check if file doesn't exist +[text] Corrected bug on SpriteFont loading +[examples] Corrected some 3d examples +[test] Added cubesmap loading test + ----------------------------------------------- Release: raylib 1.1.0 (19 April 2014) ----------------------------------------------- diff --git a/HELPME.md b/HELPME.md index 12c932d4c..119cccf83 100644 --- a/HELPME.md +++ b/HELPME.md @@ -34,4 +34,4 @@ contact * Facebook: [http://www.facebook.com/raylibgames](http://www.facebook.com/raylibgames) -[raysan5]: mailto:raysan5@gmail.com "Ramon Santamaria - Ray San" +[raysan5]: mailto:raysan@raysanweb.com "Ramon Santamaria - Ray San" diff --git a/README.md b/README.md index f2905e4e5..7da8f1a6a 100644 --- a/README.md +++ b/README.md @@ -88,6 +88,8 @@ I believe those are the best tools to train spartan-programmers. Someone could argue about debugging. raylib is a library intended for learning and I think C it's a clear enough language to allow writing small-mid size programs with a printf-based debugging. All raylib examples have also been written this way. +Since raylib v1.1, you can download a windows Installer package for easy installation and configuration. Check [raylib Webpage](http://www.raylib.com/) + building -------- @@ -143,4 +145,4 @@ The following people have contributed in some way to make raylib project a reali - Victor Dual - Marc Palau -[raysan5]: mailto:raysan5@gmail.com "Ramon Santamaria - Ray San" +[raysan5]: mailto:raysan@raysanweb.com "Ramon Santamaria - Ray San" diff --git a/ROADMAP.md b/ROADMAP.md index d306c7ac4..b48c30440 100644 --- a/ROADMAP.md +++ b/ROADMAP.md @@ -19,4 +19,4 @@ raylib v1.x Any feature missing? Do you have a request? [Let me know!][raysan5] -[raysan5]: mailto:raysan5@gmail.com "Ramon Santamaria - Ray San" +[raysan5]: mailto:raysan@raysanweb.com "Ramon Santamaria - Ray San" diff --git a/examples/ex07b_3d_shapes.c b/examples/ex07b_3d_shapes.c index af6ad837c..7520717dd 100644 --- a/examples/ex07b_3d_shapes.c +++ b/examples/ex07b_3d_shapes.c @@ -47,7 +47,7 @@ int main() DrawCubeWires((Vector3){-4, 0, -2}, 3, 6, 2, MAROON); DrawSphere((Vector3){-1, 0, -2}, 1, GREEN); - DrawSphereWires((Vector3){1, 0, 2}, 2, LIME); + DrawSphereWires((Vector3){1, 0, 2}, 2, 16, 16, LIME); DrawCylinder((Vector3){4, 0, -2}, 1, 2, 3, 4, SKYBLUE); DrawCylinderWires((Vector3){4, 0, -2}, 1, 2, 3, 4, DARKBLUE); diff --git a/release/win32-mingw/include/raylib.h b/release/win32-mingw/include/raylib.h index 21d22122e..da5427c0a 100644 --- a/release/win32-mingw/include/raylib.h +++ b/release/win32-mingw/include/raylib.h @@ -221,16 +221,16 @@ typedef struct Camera { } Camera; // Vertex data definning a mesh -typedef struct { +typedef struct VertexData { int vertexCount; float *vertices; // 3 components per vertex float *texcoords; // 2 components per vertex float *normals; // 3 components per vertex - float *colors; // 4 components per vertex + unsigned char *colors; // 4 components per vertex } VertexData; // 3d Model type -// NOTE: If using OpenGL 1.1 loaded in CPU (mesh); if OpenGL 3.3+ loaded in GPU (vaoId) +// NOTE: If using OpenGL 1.1, loaded in CPU (mesh); if OpenGL 3.3+ loaded in GPU (vaoId) typedef struct Model { VertexData mesh; unsigned int vaoId; @@ -282,6 +282,8 @@ int GetHexValue(Color color); // Returns hexadecim int GetRandomValue(int min, int max); // Returns a random value between min and max (both included) Color Fade(Color color, float alpha); // Color fade-in or fade-out, alpha goes from 0.0 to 1.0 +void ShowLogo(); // Activates raylib logo at startup + //------------------------------------------------------------------------------------ // Input Handling Functions (Module: core) //------------------------------------------------------------------------------------ @@ -395,6 +397,7 @@ void DrawGizmoEx(Vector3 position, Vector3 rotation, float scale); Model LoadModel(const char *fileName); // Load a 3d model (.OBJ) //Model LoadModelFromRES(const char *rresName, int resId); // TODO: Load a 3d model from rRES file (raylib Resource) Model LoadHeightmap(Image heightmap, float maxHeight); // Load a heightmap image as a 3d model +Model LoadCubesmap(Image cubesmap); // Load a map image as a 3d model (cubes based) void UnloadModel(Model model); // Unload 3d model from memory void SetModelTexture(Model *model, Texture2D texture); // Link a texture to a model diff --git a/release/win32-mingw/lib/libraylib.a b/release/win32-mingw/lib/libraylib.a index 9349785e0208ec3708c34d555eadbc13e92ec12c..d900d3201a0f539f9ff4db5ca8a17a43ed6b3283 100644 GIT binary patch delta 139077 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%0AGDCe20RNieSu)+A3;3dO(A*3N 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ℜ@>9T8zKfaQ-q^SyhB6+;+Bp8#ts26b2n&l%T7?& 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

6)(Dn+33v)5#DXO4;vXjHxP#fz8U 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%0DVleb>pfAH;yDf}z?XP{BLT%U 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

e0B*oWAMvQ==wxbky}=9~ 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 diff --git a/src/core.c b/src/core.c index c61a77bf4..4e323db9a 100644 --- a/src/core.c +++ b/src/core.c @@ -86,6 +86,8 @@ static int currentMouseWheelY = 0; // Required to track mouse wheel var static Color background = { 0, 0, 0, 0 }; // Screen background color +static bool showLogo = false; + //---------------------------------------------------------------------------------- // Other Modules Functions Declaration (required by core) //---------------------------------------------------------------------------------- @@ -103,6 +105,7 @@ static void ScrollCallback(GLFWwindow* window, double xoffset, double yoffset); static void CursorEnterCallback(GLFWwindow* window, int enter); // GLFW3 Cursor Enter Callback, cursor enters client area static void WindowSizeCallback(GLFWwindow* window, int width, int height); // GLFW3 WindowSize Callback, runs when window is resized static void TakeScreenshot(); // Takes a screenshot and saves it in the same folder as executable +static void LogoAnimation(); // Plays raylib logo appearing animation //---------------------------------------------------------------------------------- // Module Functions Definition - Window and OpenGL Context Functions @@ -177,6 +180,13 @@ void InitWindowEx(int width, int height, const char* title, bool resizable, cons srand(time(NULL)); // Initialize random seed ClearBackground(RAYWHITE); // Default background color for raylib games :P + + // raylib logo appearing animation + if (showLogo) + { + SetTargetFPS(60); + LogoAnimation(); + } } // Close Window and Terminate Context @@ -436,6 +446,12 @@ Color Fade(Color color, float alpha) return (Color){color.r, color.g, color.b, color.a*alpha}; } +// Activates raylib logo at startup +void ShowLogo() +{ + showLogo = true; +} + //---------------------------------------------------------------------------------- // Module Functions Definition - Input (Keyboard, Mouse, Gamepad) Functions //---------------------------------------------------------------------------------- @@ -681,7 +697,7 @@ bool IsGamepadButtonUp(int gamepad, int button) // GLFW3 Error Callback, runs on GLFW3 error static void ErrorCallback(int error, const char *description) { - TraceLog(WARNING, "GLFW3 Error: %s", description); + TraceLog(WARNING, "[GLFW3 Error] Code: %i Decription: %s", error, description); } // GLFW3 Srolling Callback, runs on mouse wheel @@ -721,9 +737,15 @@ static void WindowSizeCallback(GLFWwindow* window, int width, int height) int fbWidth, fbHeight; glfwGetFramebufferSize(window, &fbWidth, &fbHeight); // Get framebuffer size of current window - // If window is resized, graphics device is re-initialized - // NOTE: Aspect ratio does not change, so, image can be deformed + // If window is resized, graphics device is re-initialized (but only ortho mode) rlglInitGraphicsDevice(fbWidth, fbHeight); + + // Window size must be updated to be used on 3D mode to get new aspect ratio (Begin3dMode()) + windowWidth = fbWidth; + windowHeight = fbHeight; + + // Background must be also re-cleared + rlClearColor(background.r, background.g, background.b, background.a); } // Takes a bitmap (BMP) screenshot and saves it in the same folder as executable @@ -747,4 +769,123 @@ static void TakeScreenshot() shotNum++; TraceLog(INFO, "[%s] Screenshot taken!", buffer); +} + +static void LogoAnimation() +{ + int logoPositionX = windowWidth/2 - 128; + int logoPositionY = windowHeight/2 - 128; + + int framesCounter = 0; + int lettersCount = 0; + + int topSideRecWidth = 16; + int leftSideRecHeight = 16; + + int bottomSideRecWidth = 16; + int rightSideRecHeight = 16; + + char raylib[8] = " "; // raylib text array, max 8 letters + int state = 0; // Tracking animation states (State Machine) + float alpha = 1.0; // Useful for fading + + while (!WindowShouldClose() && (state != 4)) // Detect window close button or ESC key + { + // Update + //---------------------------------------------------------------------------------- + if (state == 0) // State 0: Small box blinking + { + framesCounter++; + + if (framesCounter == 84) + { + state = 1; + framesCounter = 0; // Reset counter... will be used later... + } + } + else if (state == 1) // State 1: Top and left bars growing + { + topSideRecWidth += 4; + leftSideRecHeight += 4; + + if (topSideRecWidth == 256) state = 2; + } + else if (state == 2) // State 2: Bottom and right bars growing + { + bottomSideRecWidth += 4; + rightSideRecHeight += 4; + + if (bottomSideRecWidth == 256) state = 3; + } + else if (state == 3) // State 3: Letters appearing (one by one) + { + framesCounter++; + + if (framesCounter/12) // Every 12 frames, one more letter! + { + lettersCount++; + framesCounter = 0; + } + + switch (lettersCount) + { + case 1: raylib[0] = 'r'; break; + case 2: raylib[1] = 'a'; break; + case 3: raylib[2] = 'y'; break; + case 4: raylib[3] = 'l'; break; + case 5: raylib[4] = 'i'; break; + case 6: raylib[5] = 'b'; break; + default: break; + } + + if (lettersCount >= 10) // When all letters have appeared, just fade out everything + { + alpha -= 0.02; + + if (alpha <= 0) + { + alpha = 0; + state = 4; + } + } + } + //---------------------------------------------------------------------------------- + + // Draw + //---------------------------------------------------------------------------------- + BeginDrawing(); + + if (state == 0) + { + if ((framesCounter/12)%2) DrawRectangle(logoPositionX, logoPositionY, 16, 16, BLACK); + } + else if (state == 1) + { + DrawRectangle(logoPositionX, logoPositionY, topSideRecWidth, 16, BLACK); + DrawRectangle(logoPositionX, logoPositionY, 16, leftSideRecHeight, BLACK); + } + else if (state == 2) + { + DrawRectangle(logoPositionX, logoPositionY, topSideRecWidth, 16, BLACK); + DrawRectangle(logoPositionX, logoPositionY, 16, leftSideRecHeight, BLACK); + + DrawRectangle(logoPositionX + 240, logoPositionY, 16, rightSideRecHeight, BLACK); + DrawRectangle(logoPositionX, logoPositionY + 240, bottomSideRecWidth, 16, BLACK); + } + else if (state == 3) + { + DrawRectangle(logoPositionX, logoPositionY, topSideRecWidth, 16, Fade(BLACK, alpha)); + DrawRectangle(logoPositionX, logoPositionY + 16, 16, leftSideRecHeight - 32, Fade(BLACK, alpha)); + + DrawRectangle(logoPositionX + 240, logoPositionY + 16, 16, rightSideRecHeight - 32, Fade(BLACK, alpha)); + DrawRectangle(logoPositionX, logoPositionY + 240, bottomSideRecWidth, 16, Fade(BLACK, alpha)); + + DrawRectangle(windowWidth/2 - 112, windowHeight/2 - 112, 224, 224, Fade(RAYWHITE, alpha)); + + DrawText(raylib, 356, 273, 50, Fade(BLACK, alpha)); + } + + EndDrawing(); + //---------------------------------------------------------------------------------- + } } \ No newline at end of file diff --git a/src/models.c b/src/models.c index 0c7201cdf..d66d2cce5 100644 --- a/src/models.c +++ b/src/models.c @@ -681,6 +681,7 @@ Model LoadHeightmap(Image heightmap, float maxHeight) vData.vertices = (float *)malloc(vData.vertexCount * 3 * sizeof(float)); vData.normals = (float *)malloc(vData.vertexCount * 3 * sizeof(float)); vData.texcoords = (float *)malloc(vData.vertexCount * 2 * sizeof(float)); + vData.colors = (unsigned char *)malloc(vData.vertexCount * 4 * sizeof(unsigned char)); int vCounter = 0; // Used to count vertices float by float int tcCounter = 0; // Used to count texcoords float by float @@ -765,6 +766,9 @@ Model LoadHeightmap(Image heightmap, float maxHeight) // NOTE: At this point we have all vertex, texcoord, normal data for the model in vData struct + // Fill color data + for (int i = 0; i < (4*vData.vertexCount); i++) vData.colors[i] = 255; + Model model; model.mesh = vData; // Model mesh is vertex data @@ -783,6 +787,329 @@ Model LoadHeightmap(Image heightmap, float maxHeight) return model; } +// Load a map image as a 3d model (cubes based) +Model LoadCubesmap(Image cubesmap) +{ + VertexData vData; + + // Map cube size will be 1.0 + float mapCubeSide = 1.0f; + int mapWidth = cubesmap.width * (int)mapCubeSide; + int mapHeight = cubesmap.height * (int)mapCubeSide; + + // NOTE: Max possible number of triangles numCubes * (12 triangles by cube) + int maxTriangles = cubesmap.width*cubesmap.height*12; + + int vCounter = 0; // Used to count vertices + int tcCounter = 0; // Used to count texcoords + int nCounter = 0; // Used to count normals + + float w = mapCubeSide; + float h = mapCubeSide; + float h2 = mapCubeSide; + + Vector3 *mapVertices = (Vector3 *)malloc(maxTriangles * 3 * sizeof(Vector3)); + Vector2 *mapTexcoords = (Vector2 *)malloc(maxTriangles * 3 * sizeof(Vector2)); + Vector3 *mapNormals = (Vector3 *)malloc(maxTriangles * 3 * sizeof(Vector3)); + + for (int z = 0; z < mapHeight; z += mapCubeSide) + { + for (int x = 0; x < mapWidth; x += mapCubeSide) + { + // Define the 8 vertex of the cube, we will combine them accordingly later... + Vector3 v1 = { x - w/2, h2, z - h/2 }; + Vector3 v2 = { x - w/2, h2, z + h/2 }; + Vector3 v3 = { x + w/2, h2, z + h/2 }; + Vector3 v4 = { x + w/2, h2, z - h/2 }; + Vector3 v5 = { x + w/2, 0, z - h/2 }; + Vector3 v6 = { x - w/2, 0, z - h/2 }; + Vector3 v7 = { x - w/2, 0, z + h/2 }; + Vector3 v8 = { x + w/2, 0, z + h/2 }; + + // Define the 6 normals of the cube, we will combine them accordingly later... + Vector3 n1 = { 1.0f, 0.0f, 0.0f }; + Vector3 n2 = { -1.0f, 0.0f, 0.0f }; + Vector3 n3 = { 0.0f, 1.0f, 0.0f }; + Vector3 n4 = { 0.0f, -1.0f, 0.0f }; + Vector3 n5 = { 0.0f, 0.0f, 1.0f }; + Vector3 n6 = { 0.0f, 0.0f, -1.0f }; + + // Define the 4 texture coordinates of the cube, we will combine them accordingly later... + // TODO: Use texture rectangles to define different textures for top-bottom-front-back-right-left (6) + Vector2 vt2 = { 0.0f, 0.0f }; + Vector2 vt1 = { 0.0f, 1.0f }; + Vector2 vt4 = { 1.0f, 0.0f }; + Vector2 vt3 = { 1.0f, 1.0f }; + + // We check pixel color to be WHITE, we will full cubes + if ((cubesmap.pixels[z*cubesmap.width + x].r == 255) && + (cubesmap.pixels[z*cubesmap.width + x].g == 255) && + (cubesmap.pixels[z*cubesmap.width + x].b == 255)) + { + // Define triangles (Checking Collateral Cubes!) + //---------------------------------------------- + + // Define top triangles (2 tris, 6 vertex --> v1-v2-v3, v1-v3-v4) + mapVertices[vCounter] = v1; + mapVertices[vCounter + 1] = v2; + mapVertices[vCounter + 2] = v3; + mapVertices[vCounter + 3] = v1; + mapVertices[vCounter + 4] = v3; + mapVertices[vCounter + 5] = v4; + vCounter += 6; + + mapNormals[nCounter] = n3; + mapNormals[nCounter + 1] = n3; + mapNormals[nCounter + 2] = n3; + mapNormals[nCounter + 3] = n3; + mapNormals[nCounter + 4] = n3; + mapNormals[nCounter + 5] = n3; + nCounter += 6; + + mapTexcoords[tcCounter] = vt2; + mapTexcoords[tcCounter + 1] = vt1; + mapTexcoords[tcCounter + 2] = vt3; + mapTexcoords[tcCounter + 3] = vt2; + mapTexcoords[tcCounter + 4] = vt3; + mapTexcoords[tcCounter + 5] = vt4; + tcCounter += 6; + + // Define bottom triangles (2 tris, 6 vertex --> v6-v8-v7, v6-v5-v8) + mapVertices[vCounter] = v6; + mapVertices[vCounter + 1] = v8; + mapVertices[vCounter + 2] = v7; + mapVertices[vCounter + 3] = v6; + mapVertices[vCounter + 4] = v5; + mapVertices[vCounter + 5] = v8; + vCounter += 6; + + mapNormals[nCounter] = n4; + mapNormals[nCounter + 1] = n4; + mapNormals[nCounter + 2] = n4; + mapNormals[nCounter + 3] = n4; + mapNormals[nCounter + 4] = n4; + mapNormals[nCounter + 5] = n4; + nCounter += 6; + + mapTexcoords[tcCounter] = vt4; + mapTexcoords[tcCounter + 1] = vt1; + mapTexcoords[tcCounter + 2] = vt3; + mapTexcoords[tcCounter + 3] = vt4; + mapTexcoords[tcCounter + 4] = vt2; + mapTexcoords[tcCounter + 5] = vt1; + tcCounter += 6; + + if (((z < cubesmap.height - 1) && + (cubesmap.pixels[(z + 1)*cubesmap.width + x].r == 0) && + (cubesmap.pixels[(z + 1)*cubesmap.width + x].g == 0) && + (cubesmap.pixels[(z + 1)*cubesmap.width + x].b == 0)) || (z == cubesmap.height - 1)) + { + // Define front triangles (2 tris, 6 vertex) --> v2 v7 v3, v3 v7 v8 + // NOTE: Collateral occluded faces are not generated + mapVertices[vCounter] = v2; + mapVertices[vCounter + 1] = v7; + mapVertices[vCounter + 2] = v3; + mapVertices[vCounter + 3] = v3; + mapVertices[vCounter + 4] = v7; + mapVertices[vCounter + 5] = v8; + vCounter += 6; + + mapNormals[nCounter] = n6; + mapNormals[nCounter + 1] = n6; + mapNormals[nCounter + 2] = n6; + mapNormals[nCounter + 3] = n6; + mapNormals[nCounter + 4] = n6; + mapNormals[nCounter + 5] = n6; + nCounter += 6; + + mapTexcoords[tcCounter] = vt2; + mapTexcoords[tcCounter + 1] = vt1; + mapTexcoords[tcCounter + 2] = vt4; + mapTexcoords[tcCounter + 3] = vt4; + mapTexcoords[tcCounter + 4] = vt1; + mapTexcoords[tcCounter + 5] = vt3; + tcCounter += 6; + } + + if (((z > 0) && + (cubesmap.pixels[(z - 1)*cubesmap.width + x].r == 0) && + (cubesmap.pixels[(z - 1)*cubesmap.width + x].g == 0) && + (cubesmap.pixels[(z - 1)*cubesmap.width + x].b == 0)) || (z == 0)) + { + // Define back triangles (2 tris, 6 vertex) --> v1 v5 v6, v1 v4 v5 + // NOTE: Collateral occluded faces are not generated + mapVertices[vCounter] = v1; + mapVertices[vCounter + 1] = v5; + mapVertices[vCounter + 2] = v6; + mapVertices[vCounter + 3] = v1; + mapVertices[vCounter + 4] = v4; + mapVertices[vCounter + 5] = v5; + vCounter += 6; + + mapNormals[nCounter] = n5; + mapNormals[nCounter + 1] = n5; + mapNormals[nCounter + 2] = n5; + mapNormals[nCounter + 3] = n5; + mapNormals[nCounter + 4] = n5; + mapNormals[nCounter + 5] = n5; + nCounter += 6; + + mapTexcoords[tcCounter] = vt4; + mapTexcoords[tcCounter + 1] = vt1; + mapTexcoords[tcCounter + 2] = vt3; + mapTexcoords[tcCounter + 3] = vt4; + mapTexcoords[tcCounter + 4] = vt2; + mapTexcoords[tcCounter + 5] = vt1; + tcCounter += 6; + } + + if (((x < cubesmap.width - 1) && + (cubesmap.pixels[z*cubesmap.width + (x + 1)].r == 0) && + (cubesmap.pixels[z*cubesmap.width + (x + 1)].g == 0) && + (cubesmap.pixels[z*cubesmap.width + (x + 1)].b == 0)) || (x == cubesmap.width - 1)) + { + // Define right triangles (2 tris, 6 vertex) --> v3 v8 v4, v4 v8 v5 + // NOTE: Collateral occluded faces are not generated + mapVertices[vCounter] = v3; + mapVertices[vCounter + 1] = v8; + mapVertices[vCounter + 2] = v4; + mapVertices[vCounter + 3] = v4; + mapVertices[vCounter + 4] = v8; + mapVertices[vCounter + 5] = v5; + vCounter += 6; + + mapNormals[nCounter] = n1; + mapNormals[nCounter + 1] = n1; + mapNormals[nCounter + 2] = n1; + mapNormals[nCounter + 3] = n1; + mapNormals[nCounter + 4] = n1; + mapNormals[nCounter + 5] = n1; + nCounter += 6; + + mapTexcoords[tcCounter] = vt2; + mapTexcoords[tcCounter + 1] = vt1; + mapTexcoords[tcCounter + 2] = vt4; + mapTexcoords[tcCounter + 3] = vt4; + mapTexcoords[tcCounter + 4] = vt1; + mapTexcoords[tcCounter + 5] = vt3; + tcCounter += 6; + } + + if (((x > 0) && + (cubesmap.pixels[z*cubesmap.width + (x - 1)].r == 0) && + (cubesmap.pixels[z*cubesmap.width + (x - 1)].g == 0) && + (cubesmap.pixels[z*cubesmap.width + (x - 1)].b == 0)) || (x == 0)) + { + // Define left triangles (2 tris, 6 vertex) --> v1 v7 v2, v1 v6 v7 + // NOTE: Collateral occluded faces are not generated + mapVertices[vCounter] = v1; + mapVertices[vCounter + 1] = v7; + mapVertices[vCounter + 2] = v2; + mapVertices[vCounter + 3] = v1; + mapVertices[vCounter + 4] = v6; + mapVertices[vCounter + 5] = v7; + vCounter += 6; + + mapNormals[nCounter] = n2; + mapNormals[nCounter + 1] = n2; + mapNormals[nCounter + 2] = n2; + mapNormals[nCounter + 3] = n2; + mapNormals[nCounter + 4] = n2; + mapNormals[nCounter + 5] = n2; + nCounter += 6; + + mapTexcoords[tcCounter] = vt2; + mapTexcoords[tcCounter + 1] = vt3; + mapTexcoords[tcCounter + 2] = vt4; + mapTexcoords[tcCounter + 3] = vt2; + mapTexcoords[tcCounter + 4] = vt1; + mapTexcoords[tcCounter + 5] = vt3; + tcCounter += 6; + } + } + // We check pixel color to be BLACK, we will only draw floor and roof + else if ((cubesmap.pixels[z*cubesmap.width + x].r == 0) && + (cubesmap.pixels[z*cubesmap.width + x].g == 0) && + (cubesmap.pixels[z*cubesmap.width + x].b == 0)) + { + // Define top triangles (2 tris, 6 vertex --> v1-v3-v2, v1-v4-v3) + // TODO: ... + + // Define bottom triangles (2 tris, 6 vertex --> v6-v7-v8, v6-v8-v5) + // TODO: ... + } + } + } + + // Move data from mapVertices temp arays to vertices float array + vData.vertexCount = vCounter; + + printf("Vertex count: %i\n", vCounter); + + vData.vertices = (float *)malloc(vData.vertexCount * 3 * sizeof(float)); + vData.normals = (float *)malloc(vData.vertexCount * 3 * sizeof(float)); + vData.texcoords = (float *)malloc(vData.vertexCount * 2 * sizeof(float)); + vData.colors = (unsigned char *)malloc(vData.vertexCount * 4 * sizeof(unsigned char)); + + // Fill color data + for (int i = 0; i < (4*vData.vertexCount); i++) vData.colors[i] = 255; + + int fCounter = 0; + + // Move vertices data + for (int i = 0; i < vCounter; i++) + { + vData.vertices[fCounter] = mapVertices[i].x; + vData.vertices[fCounter + 1] = mapVertices[i].y; + vData.vertices[fCounter + 2] = mapVertices[i].z; + fCounter += 3; + } + + fCounter = 0; + + // Move normals data + for (int i = 0; i < nCounter; i++) + { + vData.normals[fCounter] = mapNormals[i].x; + vData.normals[fCounter + 1] = mapNormals[i].y; + vData.normals[fCounter + 2] = mapNormals[i].z; + fCounter += 3; + } + + fCounter = 0; + + // Move texcoords data + for (int i = 0; i < tcCounter; i++) + { + vData.texcoords[fCounter] = mapTexcoords[i].x; + vData.texcoords[fCounter + 1] = mapTexcoords[i].y; + fCounter += 2; + } + + free(mapVertices); + free(mapNormals); + free(mapTexcoords); + + // NOTE: At this point we have all vertex, texcoord, normal data for the model in vData struct + + Model model; + + model.mesh = vData; // Model mesh is vertex data + model.textureId = 0; + +#if defined(USE_OPENGL_33) || defined(USE_OPENGL_ES2) + model.vaoId = rlglLoadModel(vData); // Use loaded data to generate VAO + model.textureId = 1; // Default whiteTexture + + // Now that vertex data is uploaded to GPU, we can free arrays + //free(vData.vertices); + //free(vData.texcoords); + //free(vData.normals); +#endif + + return model; +} + // Unload 3d model from memory void UnloadModel(Model model) { @@ -945,141 +1272,81 @@ static VertexData LoadOBJ(const char *fileName) objFile = fopen(fileName, "rt"); - // First pass over all file to get numVertex, numNormals, numTexCoords, numTriangles + // First reading pass: Get numVertex, numNormals, numTexCoords, numTriangles // NOTE: vertex, texcoords and normals could be optimized (to be used indexed on faces definition) + // NOTE: faces MUST be defined as TRIANGLES, not QUADS while(!feof(objFile)) { fscanf(objFile, "%c", &dataType); switch(dataType) { - case '#': // It's a comment + case '#': // Comments + case 'o': // Object name (One OBJ file can contain multible named meshes) + case 'g': // Group name + case 's': // Smoothing level + case 'm': // mtllib [external .mtl file name] + case 'u': // usemtl [material name] { - fgets(comments, 200, objFile); - } break; - case 'o': // New object - { - // TODO: Read multiple objects, we need to know numMeshes + verticesPerMesh - - // NOTE: One OBJ file can contain multible meshes defined, one after every 'o' - - } break; + fgets(comments, 200, objFile); + } break; case 'v': { fscanf(objFile, "%c", &dataType); if (dataType == 't') // Read texCoord { - fgets(comments, 200, objFile); - fscanf(objFile, "%c", &dataType); - - while (dataType == 'v') - { - fgets(comments, 200, objFile); - fscanf(objFile, "%c", &dataType); - } - - if (dataType == '#') - { - fscanf(objFile, "%i", &numTexCoords); - } - + numTexCoords++; fgets(comments, 200, objFile); } else if (dataType == 'n') // Read normals { - fgets(comments, 200, objFile); - fscanf(objFile, "%c", &dataType); - - while (dataType == 'v') - { - fgets(comments, 200, objFile); - fscanf(objFile, "%c", &dataType); - } - - if (dataType == '#') - { - fscanf(objFile, "%i", &numNormals); - } - + numNormals++; fgets(comments, 200, objFile); } else // Read vertex { - fgets(comments, 200, objFile); - fscanf(objFile, "%c", &dataType); - - while (dataType == 'v') - { - fgets(comments, 200, objFile); - fscanf(objFile, "%c", &dataType); - } - - if (dataType == '#') - { - fscanf(objFile, "%i", &numVertex); - } - + numVertex++; fgets(comments, 200, objFile); } } break; case 'f': { + numTriangles++; fgets(comments, 200, objFile); - fscanf(objFile, "%c", &dataType); - - while (dataType == 'f') - { - fgets(comments, 200, objFile); - fscanf(objFile, "%c", &dataType); - } - - if (dataType == '#') - { - fscanf(objFile, "%i", &numTriangles); - } - - fgets(comments, 200, objFile); - } break; default: break; } } + TraceLog(DEBUG, "[%s] Model num vertices: %i", fileName, numVertex); + TraceLog(DEBUG, "[%s] Model num texcoords: %i", fileName, numTexCoords); + TraceLog(DEBUG, "[%s] Model num normals: %i", fileName, numNormals); + TraceLog(DEBUG, "[%s] Model num triangles: %i", fileName, numTriangles); + // Once we know the number of vertices to store, we create required arrays Vector3 *midVertices = (Vector3 *)malloc(numVertex*sizeof(Vector3)); - Vector3 *midNormals = (Vector3 *)malloc(numNormals*sizeof(Vector3)); - Vector2 *midTexCoords = (Vector2 *)malloc(numTexCoords*sizeof(Vector2)); - - vData.vertexCount = numTriangles*3; - - // Additional arrays to store vertex data as floats - vData.vertices = (float *)malloc(vData.vertexCount * 3 * sizeof(float)); - vData.texcoords = (float *)malloc(vData.vertexCount * 2 * sizeof(float)); - vData.normals = (float *)malloc(vData.vertexCount * 3 * sizeof(float)); - vData.colors = (float *)malloc(vData.vertexCount * 4 * sizeof(float)); - + Vector3 *midNormals; + if (numNormals > 0) midNormals = (Vector3 *)malloc(numNormals*sizeof(Vector3)); + Vector2 *midTexCoords; + if (numTexCoords > 0) midTexCoords = (Vector2 *)malloc(numTexCoords*sizeof(Vector2)); + int countVertex = 0; int countNormals = 0; int countTexCoords = 0; - - int vCounter = 0; // Used to count vertices float by float - int tcCounter = 0; // Used to count texcoords float by float - int nCounter = 0; // Used to count normals float by float - + rewind(objFile); // Return to the beginning of the file, to read again - // Reading again file to get vertex data + // Second reading pass: Get vertex data to fill intermediate arrays + // NOTE: This second pass is required in case of multiple meshes defined in same OBJ + // TODO: Consider that diferent meshes can have different vertex data available (position, texcoords, normals) while(!feof(objFile)) { fscanf(objFile, "%c", &dataType); switch(dataType) { - case '#': - { - fgets(comments, 200, objFile); - } break; + case '#': case 'o': case 'g': case 's': case 'm': case 'u': case 'f': fgets(comments, 200, objFile); break; case 'v': { fscanf(objFile, "%c", &dataType); @@ -1108,60 +1375,107 @@ static VertexData LoadOBJ(const char *fileName) fscanf(objFile, "%c", &dataType); } } break; + default: break; + } + } + + // At this point all vertex data (v, vt, vn) has been gathered on midVertices, midTexCoords, midNormals + // Now we can organize that data into our VertexData struct + + vData.vertexCount = numTriangles*3; + + // Additional arrays to store vertex data as floats + vData.vertices = (float *)malloc(vData.vertexCount * 3 * sizeof(float)); + vData.texcoords = (float *)malloc(vData.vertexCount * 2 * sizeof(float)); + vData.normals = (float *)malloc(vData.vertexCount * 3 * sizeof(float)); + vData.colors = (unsigned char *)malloc(vData.vertexCount * 4 * sizeof(unsigned char)); + + int vCounter = 0; // Used to count vertices float by float + int tcCounter = 0; // Used to count texcoords float by float + int nCounter = 0; // Used to count normals float by float + + int vNum[3], vtNum[3], vnNum[3]; + + rewind(objFile); // Return to the beginning of the file, to read again + + if (numNormals == 0) TraceLog(INFO, "[%s] No normals data on OBJ, normals will be generated from faces data", fileName); + + // Third reading pass: Get faces (triangles) data and fill VertexArray + while(!feof(objFile)) + { + fscanf(objFile, "%c", &dataType); + + switch(dataType) + { + case '#': case 'o': case 'g': case 's': case 'm': case 'u': case 'v': fgets(comments, 200, objFile); break; case 'f': { - // At this point all vertex data (v, vt, vn) have been gathered on midVertices, midTexCoords, midNormals - // Now we can organize that data into our VertexData struct - - int vNum, vtNum, vnNum; - fscanf(objFile, "%c", &dataType); - fscanf(objFile, "%i/%i/%i", &vNum, &vtNum, &vnNum); + // NOTE: It could be that OBJ does not have normals or texcoords defined! - vData.vertices[vCounter] = midVertices[vNum-1].x; - vData.vertices[vCounter + 1] = midVertices[vNum-1].y; - vData.vertices[vCounter + 2] = midVertices[vNum-1].z; + if ((numNormals == 0) && (numTexCoords == 0)) fscanf(objFile, "%i %i %i", &vNum[0], &vNum[1], &vNum[2]); + else if (numNormals == 0) fscanf(objFile, "%i/%i %i/%i %i/%i", &vNum[0], &vtNum[0], &vNum[1], &vtNum[1], &vNum[2], &vtNum[2]); + else fscanf(objFile, "%i/%i/%i %i/%i/%i %i/%i/%i", &vNum[0], &vtNum[0], &vnNum[0], &vNum[1], &vtNum[1], &vnNum[1], &vNum[2], &vtNum[2], &vnNum[2]); + + vData.vertices[vCounter] = midVertices[vNum[0]-1].x; + vData.vertices[vCounter + 1] = midVertices[vNum[0]-1].y; + vData.vertices[vCounter + 2] = midVertices[vNum[0]-1].z; + vCounter += 3; + vData.vertices[vCounter] = midVertices[vNum[1]-1].x; + vData.vertices[vCounter + 1] = midVertices[vNum[1]-1].y; + vData.vertices[vCounter + 2] = midVertices[vNum[1]-1].z; + vCounter += 3; + vData.vertices[vCounter] = midVertices[vNum[2]-1].x; + vData.vertices[vCounter + 1] = midVertices[vNum[2]-1].y; + vData.vertices[vCounter + 2] = midVertices[vNum[2]-1].z; vCounter += 3; - vData.normals[nCounter] = midNormals[vnNum-1].x; - vData.normals[nCounter + 1] = midNormals[vnNum-1].y; - vData.normals[nCounter + 2] = midNormals[vnNum-1].z; - nCounter += 3; + if (numNormals > 0) + { + vData.normals[nCounter] = midNormals[vnNum[0]-1].x; + vData.normals[nCounter + 1] = midNormals[vnNum[0]-1].y; + vData.normals[nCounter + 2] = midNormals[vnNum[0]-1].z; + nCounter += 3; + vData.normals[nCounter] = midNormals[vnNum[1]-1].x; + vData.normals[nCounter + 1] = midNormals[vnNum[1]-1].y; + vData.normals[nCounter + 2] = midNormals[vnNum[1]-1].z; + nCounter += 3; + vData.normals[nCounter] = midNormals[vnNum[2]-1].x; + vData.normals[nCounter + 1] = midNormals[vnNum[2]-1].y; + vData.normals[nCounter + 2] = midNormals[vnNum[2]-1].z; + nCounter += 3; + } + else + { + // If normals not defined, they are calculated from the 3 vertices [N = (V2 - V1) x (V3 - V1)] + Vector3 norm = VectorCrossProduct(VectorSubtract(midVertices[vNum[1]-1], midVertices[vNum[0]-1]), VectorSubtract(midVertices[vNum[2]-1], midVertices[vNum[0]-1])); + VectorNormalize(&norm); + + vData.normals[nCounter] = norm.x; + vData.normals[nCounter + 1] = norm.y; + vData.normals[nCounter + 2] = norm.z; + nCounter += 3; + vData.normals[nCounter] = norm.x; + vData.normals[nCounter + 1] = norm.y; + vData.normals[nCounter + 2] = norm.z; + nCounter += 3; + vData.normals[nCounter] = norm.x; + vData.normals[nCounter + 1] = norm.y; + vData.normals[nCounter + 2] = norm.z; + nCounter += 3; + } - vData.texcoords[tcCounter] = midTexCoords[vtNum-1].x; - vData.texcoords[tcCounter + 1] = -midTexCoords[vtNum-1].y; - tcCounter += 2; - - fscanf(objFile, "%i/%i/%i", &vNum, &vtNum, &vnNum); - - vData.vertices[vCounter] = midVertices[vNum-1].x; - vData.vertices[vCounter + 1] = midVertices[vNum-1].y; - vData.vertices[vCounter + 2] = midVertices[vNum-1].z; - vCounter += 3; - - vData.normals[nCounter] = midNormals[vnNum-1].x; - vData.normals[nCounter + 1] = midNormals[vnNum-1].y; - vData.normals[nCounter + 2] = midNormals[vnNum-1].z; - nCounter += 3; - - vData.texcoords[tcCounter] = midTexCoords[vtNum-1].x; - vData.texcoords[tcCounter + 1] = -midTexCoords[vtNum-1].y; - tcCounter += 2; - - fscanf(objFile, "%i/%i/%i", &vNum, &vtNum, &vnNum); - - vData.vertices[vCounter] = midVertices[vNum-1].x; - vData.vertices[vCounter + 1] = midVertices[vNum-1].y; - vData.vertices[vCounter + 2] = midVertices[vNum-1].z; - vCounter += 3; - - vData.normals[nCounter] = midNormals[vnNum-1].x; - vData.normals[nCounter + 1] = midNormals[vnNum-1].y; - vData.normals[nCounter + 2] = midNormals[vnNum-1].z; - nCounter += 3; - - vData.texcoords[tcCounter] = midTexCoords[vtNum-1].x; - vData.texcoords[tcCounter + 1] = -midTexCoords[vtNum-1].y; - tcCounter += 2; + if (numTexCoords > 0) + { + vData.texcoords[tcCounter] = midTexCoords[vtNum[0]-1].x; + vData.texcoords[tcCounter + 1] = -midTexCoords[vtNum[0]-1].y; + tcCounter += 2; + vData.texcoords[tcCounter] = midTexCoords[vtNum[1]-1].x; + vData.texcoords[tcCounter + 1] = -midTexCoords[vtNum[1]-1].y; + tcCounter += 2; + vData.texcoords[tcCounter] = midTexCoords[vtNum[2]-1].x; + vData.texcoords[tcCounter + 1] = -midTexCoords[vtNum[2]-1].y; + tcCounter += 2; + } } break; default: break; } @@ -1169,8 +1483,11 @@ static VertexData LoadOBJ(const char *fileName) fclose(objFile); + // Security check, just in case no normals or no texcoords defined in OBJ + if (numTexCoords == 0) for (int i = 0; i < (2*vData.vertexCount); i++) vData.texcoords[i] = 0.0f; + // NOTE: We set all vertex colors to white - for (int i = 0; i < (4*vData.vertexCount); i++) vData.colors[i] = 1.0f; + for (int i = 0; i < (4*vData.vertexCount); i++) vData.colors[i] = 255; // Now we can free temp mid* arrays free(midVertices); diff --git a/src/raylib.h b/src/raylib.h index 0ff357c29..da5427c0a 100644 --- a/src/raylib.h +++ b/src/raylib.h @@ -226,11 +226,11 @@ typedef struct VertexData { float *vertices; // 3 components per vertex float *texcoords; // 2 components per vertex float *normals; // 3 components per vertex - float *colors; // 4 components per vertex + unsigned char *colors; // 4 components per vertex } VertexData; // 3d Model type -// NOTE: If using OpenGL 1.1 loaded in CPU (mesh); if OpenGL 3.3+ loaded in GPU (vaoId) +// NOTE: If using OpenGL 1.1, loaded in CPU (mesh); if OpenGL 3.3+ loaded in GPU (vaoId) typedef struct Model { VertexData mesh; unsigned int vaoId; @@ -282,6 +282,8 @@ int GetHexValue(Color color); // Returns hexadecim int GetRandomValue(int min, int max); // Returns a random value between min and max (both included) Color Fade(Color color, float alpha); // Color fade-in or fade-out, alpha goes from 0.0 to 1.0 +void ShowLogo(); // Activates raylib logo at startup + //------------------------------------------------------------------------------------ // Input Handling Functions (Module: core) //------------------------------------------------------------------------------------ @@ -395,6 +397,7 @@ void DrawGizmoEx(Vector3 position, Vector3 rotation, float scale); Model LoadModel(const char *fileName); // Load a 3d model (.OBJ) //Model LoadModelFromRES(const char *rresName, int resId); // TODO: Load a 3d model from rRES file (raylib Resource) Model LoadHeightmap(Image heightmap, float maxHeight); // Load a heightmap image as a 3d model +Model LoadCubesmap(Image cubesmap); // Load a map image as a 3d model (cubes based) void UnloadModel(Model model); // Unload 3d model from memory void SetModelTexture(Model *model, Texture2D texture); // Link a texture to a model diff --git a/src/rlgl.c b/src/rlgl.c index 313a2f1c9..c181c7d6c 100644 --- a/src/rlgl.c +++ b/src/rlgl.c @@ -58,8 +58,6 @@ //#include "glad.h" // Other extensions loading lib? --> REVIEW -#define USE_VBO_DOUBLE_BUFFERS // Enable VBO double buffers usage --> REVIEW! - //---------------------------------------------------------------------------------- // Defines and Macros //---------------------------------------------------------------------------------- @@ -77,7 +75,7 @@ typedef struct { int vCounter; int cCounter; float *vertices; // 3 components per vertex - float *colors; // 4 components per vertex + unsigned char *colors; // 4 components per vertex } VertexPositionColorBuffer; // Vertex buffer (position + texcoords + color arrays) @@ -88,7 +86,7 @@ typedef struct { int cCounter; float *vertices; // 3 components per vertex float *texcoords; // 2 components per vertex - float *colors; // 4 components per vertex + unsigned char *colors; // 4 components per vertex } VertexPositionColorTextureBuffer; // Vertex buffer (position + texcoords + normals arrays) @@ -110,7 +108,7 @@ typedef struct { int cCounter; float *vertices; // 3 components per vertex float *texcoords; // 2 components per vertex - float *colors; // 4 components per vertex + unsigned char *colors; // 4 components per vertex unsigned int *indices; // 6 indices per quad } VertexPositionColorTextureIndexBuffer; @@ -165,13 +163,6 @@ static GLuint linesBuffer[2]; static GLuint trianglesBuffer[2]; static GLuint quadsBuffer[4]; -#ifdef USE_VBO_DOUBLE_BUFFERS -// Double buffering -static GLuint vaoQuadsB; -static GLuint quadsBufferB[4]; -static bool useBufferB = false; -#endif - static DrawCall *draws; static int drawsCounter; @@ -566,7 +557,7 @@ void rlNormal3f(float x, float y, float z) } // Define one vertex (color) -void rlColor4f(float x, float y, float z, float w) +void rlColor4ub(byte x, byte y, byte z, byte w) { switch (currentDrawMode) { @@ -605,15 +596,15 @@ void rlColor4f(float x, float y, float z, float w) } // Define one vertex (color) -void rlColor4ub(byte r, byte g, byte b, byte a) +void rlColor4f(float r, float g, float b, float a) { - rlColor4f((float)r/255, (float)g/255, (float)b/255, (float)a/255); + rlColor4ub((byte)(r*255), (byte)(g*255), (byte)(b*255), (byte)(a*255)); } // Define one vertex (color) void rlColor3f(float x, float y, float z) { - rlColor4f(x, y, z, 1.0); + rlColor4ub((byte)(x*255), (byte)(y*255), (byte)(z*255), 255); } #endif @@ -826,48 +817,23 @@ void rlglClose() void rlglDraw() { + UpdateBuffers(); + glUseProgram(shaderProgram); // Use our shader glUniformMatrix4fv(projectionMatrixLoc, 1, false, GetMatrixVector(projection)); glUniformMatrix4fv(modelviewMatrixLoc, 1, false, GetMatrixVector(modelview)); glUniform1i(textureLoc, 0); - - UpdateBuffers(); - - if (lines.vCounter > 0) - { - glBindTexture(GL_TEXTURE_2D, whiteTexture); - - glBindVertexArray(vaoLines); - glDrawArrays(GL_LINES, 0, lines.vCounter); - - glBindTexture(GL_TEXTURE_2D, 0); - } - - if (triangles.vCounter > 0) - { - glBindTexture(GL_TEXTURE_2D, whiteTexture); - - glBindVertexArray(vaoTriangles); - glDrawArrays(GL_TRIANGLES, 0, triangles.vCounter); - - glBindTexture(GL_TEXTURE_2D, 0); - } + // NOTE: We draw in this order: textured quads, triangles shapes, lines + if (quads.vCounter > 0) { int quadsCount = 0; int numIndicesToProcess = 0; int indicesOffset = 0; -#ifdef USE_VBO_DOUBLE_BUFFERS - // Depending on useBufferB, use Buffer A or Buffer B - if (useBufferB) glBindVertexArray(vaoQuadsB); - else -#endif - { - glBindVertexArray(vaoQuads); - } + glBindVertexArray(vaoQuads); //TraceLog(DEBUG, "Draws required per frame: %i", drawsCounter); @@ -885,9 +851,30 @@ void rlglDraw() indicesOffset += draws[i].vertexCount/4*6; } + + glBindTexture(GL_TEXTURE_2D, 0); // Unbind textures + } + + if (triangles.vCounter > 0) + { + glBindTexture(GL_TEXTURE_2D, whiteTexture); + + glBindVertexArray(vaoTriangles); + glDrawArrays(GL_TRIANGLES, 0, triangles.vCounter); + + glBindTexture(GL_TEXTURE_2D, 0); + } + + if (lines.vCounter > 0) + { + glBindTexture(GL_TEXTURE_2D, whiteTexture); + + glBindVertexArray(vaoLines); + glDrawArrays(GL_LINES, 0, lines.vCounter); + + glBindTexture(GL_TEXTURE_2D, 0); } - glBindTexture(GL_TEXTURE_2D, 0); // Unbind textures glBindVertexArray(0); // Unbind VAO // Reset draws counter @@ -905,11 +892,6 @@ void rlglDraw() quads.vCounter = 0; quads.tcCounter = 0; quads.cCounter = 0; - - // TODO: Review double buffer performance -> no improvement! (?) -#ifdef USE_VBO_DOUBLE_BUFFERS - useBufferB = !useBufferB; // Change buffers usage! -#endif } #endif // End for OpenGL 3.3+ and ES2 only functions @@ -931,7 +913,7 @@ void rlglDrawModel(Model model, Vector3 position, Vector3 rotation, Vector3 scal glVertexPointer(3, GL_FLOAT, 0, model.mesh.vertices); // Pointer to vertex coords array glTexCoordPointer(2, GL_FLOAT, 0, model.mesh.texcoords); // Pointer to texture coords array glNormalPointer(GL_FLOAT, 0, model.mesh.normals); // Pointer to normals array - //glColorPointer(4, GL_UNSIGNED_BYTE, 0, model.colors); // Pointer to colors array (NOT USED) + //glColorPointer(4, GL_UNSIGNED_BYTE, 0, model.mesh.colors); // Pointer to colors array (NOT USED) //TraceLog(DEBUG, "Drawing model.mesh, VertexCount: %i", model.mesh.vertexCount); @@ -966,15 +948,36 @@ void rlglDrawModel(Model model, Vector3 position, Vector3 rotation, Vector3 scal glUniformMatrix4fv(projectionMatrixLoc, 1, false, GetMatrixVector(projection)); glUniformMatrix4fv(modelviewMatrixLoc, 1, false, GetMatrixVector(modelviewworld)); glUniform1i(textureLoc, 0); + + // Apply color tinting to model: 2 OPTIONS +/* + // OPTION 1 + // Update colors array (model.mesh.colors) with color + int j = 0; + for (int i = 0; i < model.mesh.vertexCount; i++) + { + model.mesh.colors[j] = color.r; + model.mesh.colors[j+1] = color.g; + model.mesh.colors[j+2] = color.b; + model.mesh.colors[j+3] = color.a; + j += 4; + } + + // Update colors buffer in CPU (using Shader) + glBindVertexArray(model.vaoId); + GLuint colorVboId; + glGetVertexAttribIuiv(2, GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING, &colorVboId); // NOTE: Color VBO is buffer index 2 + glBindBuffer(GL_ARRAY_BUFFER, colorVboId); + glBufferSubData(GL_ARRAY_BUFFER, 0, sizeof(unsigned char)*4*model.mesh.vertexCount, model.mesh.colors); + + // OPTION 2: Just update one uniform on fragment shader + // NOTE: It requires shader modification to add uniform (fragment shader) and create location point + //glUniform4f(fragmentUniformColorLoc, (float)color.r/255, (float)color.g/255, (float)color.b/255, (float)color.a/255); +*/ //TraceLog(DEBUG, "ShaderProgram: %i, VAO ID: %i, VertexCount: %i", shaderProgram, model.vaoId, model.mesh.vertexCount); glBindVertexArray(model.vaoId); - - // TODO: Update vertex color - glBindBuffer(GL_ARRAY_BUFFER, linesBuffer[1]); - glBufferSubData(GL_ARRAY_BUFFER, 0, sizeof(float)*4*model.mesh.vertexCount, model.mesh.colors); - glBindTexture(GL_TEXTURE_2D, model.textureId); glDrawArrays(GL_TRIANGLES, 0, model.mesh.vertexCount); @@ -989,8 +992,8 @@ void rlglDrawModel(Model model, Vector3 position, Vector3 rotation, Vector3 scal // Initialize Graphics Device (OpenGL stuff) void rlglInitGraphicsDevice(int fbWidth, int fbHeight) { - //glViewport(0, 0, fbWidth, fbHeight); // Set viewport width and height - // NOTE: Not required, viewport will be full window space + glViewport(0, 0, fbWidth, fbHeight); // Set viewport width and height + // NOTE: Required! viewport must be recalculated if screen resized! // NOTE: Don't confuse glViewport with the transformation matrix // NOTE: glViewport just defines the area of the context that you will actually draw to. @@ -1052,7 +1055,7 @@ unsigned int rlglLoadTexture(unsigned char *data, int width, int height, bool ge // Check if width and height are power-of-two (POT) if (((width > 0) && ((width & (width - 1)) == 0)) && ((height > 0) && ((height & (height - 1)) == 0))) texIsPOT = true; - if (!texIsPOT) + if (genMipmaps && !texIsPOT) { TraceLog(WARNING, "[ID %i] Texture is not power-of-two, mipmaps can not be generated", id); @@ -1194,26 +1197,29 @@ unsigned int rlglLoadModel(VertexData mesh) // Create buffers for our vertex data (positions, texcoords, normals) glGenBuffers(3, vertexBuffer); - // Enable vertex attributes + // Enable vertex attributes: position glBindBuffer(GL_ARRAY_BUFFER, vertexBuffer[0]); glBufferData(GL_ARRAY_BUFFER, sizeof(float)*3*mesh.vertexCount, mesh.vertices, GL_STATIC_DRAW); glEnableVertexAttribArray(vertexLoc); glVertexAttribPointer(vertexLoc, 3, GL_FLOAT, 0, 0, 0); + // Enable vertex attributes: texcoords glBindBuffer(GL_ARRAY_BUFFER, vertexBuffer[1]); glBufferData(GL_ARRAY_BUFFER, sizeof(float)*2*mesh.vertexCount, mesh.texcoords, GL_STATIC_DRAW); glEnableVertexAttribArray(texcoordLoc); glVertexAttribPointer(texcoordLoc, 2, GL_FLOAT, 0, 0, 0); + // Enable vertex attributes: normals //glBindBuffer(GL_ARRAY_BUFFER, vertexBuffer[2]); //glBufferData(GL_ARRAY_BUFFER, sizeof(float)*3*mesh.vertexCount, mesh.normals, GL_STATIC_DRAW); //glEnableVertexAttribArray(normalLoc); //glVertexAttribPointer(normalLoc, 3, GL_FLOAT, 0, 0, 0); + // Enable vertex attributes: colors glBindBuffer(GL_ARRAY_BUFFER, vertexBuffer[2]); - glBufferData(GL_ARRAY_BUFFER, sizeof(float)*4*mesh.vertexCount, mesh.colors, GL_STATIC_DRAW); + glBufferData(GL_ARRAY_BUFFER, sizeof(unsigned char)*4*mesh.vertexCount, mesh.colors, GL_STATIC_DRAW); glEnableVertexAttribArray(colorLoc); - glVertexAttribPointer(colorLoc, 4, GL_FLOAT, 0, 0, 0); + glVertexAttribPointer(colorLoc, 4, GL_UNSIGNED_BYTE, GL_TRUE, 0, 0); if (vaoModel > 0) TraceLog(INFO, "[ID %i] Model uploaded successfully to VRAM (GPU)", vaoModel); else TraceLog(WARNING, "Model could not be uploaded to VRAM (GPU)"); @@ -1408,34 +1414,34 @@ static char *TextFileRead(char *fn) static void InitializeBuffers() { // Initialize lines arrays (vertex position and color data) - lines.vertices = (float *)malloc(sizeof(float)*3*2*MAX_LINES_BATCH); // 3 float by vertex, 2 vertex by line - lines.colors = (float *)malloc(sizeof(float)*4*2*MAX_LINES_BATCH); // 4 float by color, 2 colors by line + lines.vertices = (float *)malloc(sizeof(float)*3*2*MAX_LINES_BATCH); // 3 float by vertex, 2 vertex by line + lines.colors = (unsigned char *)malloc(sizeof(unsigned char)*4*2*MAX_LINES_BATCH); // 4 float by color, 2 colors by line for (int i = 0; i < (3*2*MAX_LINES_BATCH); i++) lines.vertices[i] = 0.0; - for (int i = 0; i < (4*2*MAX_LINES_BATCH); i++) lines.colors[i] = 0.0; + for (int i = 0; i < (4*2*MAX_LINES_BATCH); i++) lines.colors[i] = 0; lines.vCounter = 0; lines.cCounter = 0; // Initialize triangles arrays (vertex position and color data) - triangles.vertices = (float *)malloc(sizeof(float)*3*3*MAX_TRIANGLES_BATCH); // 3 float by vertex, 3 vertex by triangle - triangles.colors = (float *)malloc(sizeof(float)*4*3*MAX_TRIANGLES_BATCH); // 4 float by color, 3 colors by triangle + triangles.vertices = (float *)malloc(sizeof(float)*3*3*MAX_TRIANGLES_BATCH); // 3 float by vertex, 3 vertex by triangle + triangles.colors = (unsigned char *)malloc(sizeof(unsigned char)*4*3*MAX_TRIANGLES_BATCH); // 4 float by color, 3 colors by triangle for (int i = 0; i < (3*3*MAX_TRIANGLES_BATCH); i++) triangles.vertices[i] = 0.0; - for (int i = 0; i < (4*3*MAX_TRIANGLES_BATCH); i++) triangles.colors[i] = 0.0; + for (int i = 0; i < (4*3*MAX_TRIANGLES_BATCH); i++) triangles.colors[i] = 0; triangles.vCounter = 0; triangles.cCounter = 0; // Initialize quads arrays (vertex position, texcoord and color data... and indexes) - quads.vertices = (float *)malloc(sizeof(float)*3*4*MAX_QUADS_BATCH); // 3 float by vertex, 4 vertex by quad - quads.texcoords = (float *)malloc(sizeof(float)*2*4*MAX_QUADS_BATCH); // 2 float by texcoord, 4 texcoord by quad - quads.colors = (float *)malloc(sizeof(float)*4*4*MAX_QUADS_BATCH); // 4 float by color, 4 colors by quad - quads.indices = (unsigned int *)malloc(sizeof(int)*6*MAX_QUADS_BATCH); // 6 int by quad (indices) + quads.vertices = (float *)malloc(sizeof(float)*3*4*MAX_QUADS_BATCH); // 3 float by vertex, 4 vertex by quad + quads.texcoords = (float *)malloc(sizeof(float)*2*4*MAX_QUADS_BATCH); // 2 float by texcoord, 4 texcoord by quad + quads.colors = (unsigned char *)malloc(sizeof(unsigned char)*4*4*MAX_QUADS_BATCH); // 4 float by color, 4 colors by quad + quads.indices = (unsigned int *)malloc(sizeof(int)*6*MAX_QUADS_BATCH); // 6 int by quad (indices) for (int i = 0; i < (3*4*MAX_QUADS_BATCH); i++) quads.vertices[i] = 0.0; for (int i = 0; i < (2*4*MAX_QUADS_BATCH); i++) quads.texcoords[i] = 0.0; - for (int i = 0; i < (4*4*MAX_QUADS_BATCH); i++) quads.colors[i] = 0.0; + for (int i = 0; i < (4*4*MAX_QUADS_BATCH); i++) quads.colors[i] = 0; int k = 0; @@ -1475,9 +1481,9 @@ static void InitializeVAOs() // Lines - colors buffer glBindBuffer(GL_ARRAY_BUFFER, linesBuffer[1]); - glBufferData(GL_ARRAY_BUFFER, sizeof(float)*4*2*MAX_LINES_BATCH, lines.colors, GL_DYNAMIC_DRAW); + glBufferData(GL_ARRAY_BUFFER, sizeof(unsigned char)*4*2*MAX_LINES_BATCH, lines.colors, GL_DYNAMIC_DRAW); glEnableVertexAttribArray(colorLoc); - glVertexAttribPointer(colorLoc, 4, GL_FLOAT, 0, 0, 0); + glVertexAttribPointer(colorLoc, 4, GL_UNSIGNED_BYTE, GL_TRUE, 0, 0); TraceLog(INFO, "[ID %i] Lines VAO initialized successfully", vaoLines); //-------------------------------------------------------------- @@ -1496,9 +1502,9 @@ static void InitializeVAOs() glVertexAttribPointer(vertexLoc, 3, GL_FLOAT, 0, 0, 0); glBindBuffer(GL_ARRAY_BUFFER, trianglesBuffer[1]); - glBufferData(GL_ARRAY_BUFFER, sizeof(float)*4*3*MAX_TRIANGLES_BATCH, triangles.colors, GL_DYNAMIC_DRAW); + glBufferData(GL_ARRAY_BUFFER, sizeof(unsigned char)*4*3*MAX_TRIANGLES_BATCH, triangles.colors, GL_DYNAMIC_DRAW); glEnableVertexAttribArray(colorLoc); - glVertexAttribPointer(colorLoc, 4, GL_FLOAT, 0, 0, 0); + glVertexAttribPointer(colorLoc, 4, GL_UNSIGNED_BYTE, GL_TRUE, 0, 0); TraceLog(INFO, "[ID %i] Triangles VAO initialized successfully", vaoTriangles); //-------------------------------------------------------------- @@ -1522,46 +1528,15 @@ static void InitializeVAOs() glVertexAttribPointer(texcoordLoc, 2, GL_FLOAT, 0, 0, 0); glBindBuffer(GL_ARRAY_BUFFER, quadsBuffer[2]); - glBufferData(GL_ARRAY_BUFFER, sizeof(float)*4*4*MAX_QUADS_BATCH, quads.colors, GL_DYNAMIC_DRAW); + glBufferData(GL_ARRAY_BUFFER, sizeof(unsigned char)*4*4*MAX_QUADS_BATCH, quads.colors, GL_DYNAMIC_DRAW); glEnableVertexAttribArray(colorLoc); - glVertexAttribPointer(colorLoc, 4, GL_FLOAT, 0, 0, 0); + glVertexAttribPointer(colorLoc, 4, GL_UNSIGNED_BYTE, GL_TRUE, 0, 0); // Fill index buffer glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, quadsBuffer[3]); glBufferData(GL_ELEMENT_ARRAY_BUFFER, sizeof(int)*6*MAX_QUADS_BATCH, quads.indices, GL_STATIC_DRAW); TraceLog(INFO, "[ID %i] Quads VAO initialized successfully", vaoQuads); - -#ifdef USE_VBO_DOUBLE_BUFFERS - // Initialize Quads VAO (Buffer B) - glGenVertexArrays(1, &vaoQuadsB); - glBindVertexArray(vaoQuadsB); - - // Create buffers for our vertex data - glGenBuffers(4, quadsBufferB); - - // Enable vertex attributes - glBindBuffer(GL_ARRAY_BUFFER, quadsBufferB[0]); - glBufferData(GL_ARRAY_BUFFER, sizeof(float)*3*4*MAX_QUADS_BATCH, quads.vertices, GL_DYNAMIC_DRAW); - glEnableVertexAttribArray(vertexLoc); - glVertexAttribPointer(vertexLoc, 3, GL_FLOAT, 0, 0, 0); - - glBindBuffer(GL_ARRAY_BUFFER, quadsBufferB[1]); - glBufferData(GL_ARRAY_BUFFER, sizeof(float)*2*4*MAX_QUADS_BATCH, quads.texcoords, GL_DYNAMIC_DRAW); - glEnableVertexAttribArray(texcoordLoc); - glVertexAttribPointer(texcoordLoc, 2, GL_FLOAT, 0, 0, 0); - - glBindBuffer(GL_ARRAY_BUFFER, quadsBufferB[2]); - glBufferData(GL_ARRAY_BUFFER, sizeof(float)*4*4*MAX_QUADS_BATCH, quads.colors, GL_DYNAMIC_DRAW); - glEnableVertexAttribArray(colorLoc); - glVertexAttribPointer(colorLoc, 4, GL_FLOAT, 0, 0, 0); - - // Fill index buffer - glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, quadsBufferB[3]); - glBufferData(GL_ELEMENT_ARRAY_BUFFER, sizeof(int)*6*MAX_QUADS_BATCH, quads.indices, GL_STATIC_DRAW); - - TraceLog(INFO, "[ID %i] Second Quads VAO successfully initilized (double buffering)", vaoQuadsB); -#endif // Unbind the current VAO glBindVertexArray(0); @@ -1581,7 +1556,7 @@ static void UpdateBuffers() // Lines - colors buffer glBindBuffer(GL_ARRAY_BUFFER, linesBuffer[1]); //glBufferData(GL_ARRAY_BUFFER, sizeof(float)*4*2*MAX_LINES_BATCH, lines.colors, GL_DYNAMIC_DRAW); - glBufferSubData(GL_ARRAY_BUFFER, 0, sizeof(float)*4*lines.vCounter, lines.colors); + glBufferSubData(GL_ARRAY_BUFFER, 0, sizeof(unsigned char)*4*lines.cCounter, lines.colors); //-------------------------------------------------------------- @@ -1596,54 +1571,27 @@ static void UpdateBuffers() // Triangles - colors buffer glBindBuffer(GL_ARRAY_BUFFER, trianglesBuffer[1]); //glBufferData(GL_ARRAY_BUFFER, sizeof(float)*4*3*MAX_TRIANGLES_BATCH, triangles.colors, GL_DYNAMIC_DRAW); - glBufferSubData(GL_ARRAY_BUFFER, 0, sizeof(float)*4*triangles.cCounter, triangles.colors); + glBufferSubData(GL_ARRAY_BUFFER, 0, sizeof(unsigned char)*4*triangles.cCounter, triangles.colors); //-------------------------------------------------------------- - // Depending on useBufferB, update Buffer A or Buffer B -#ifdef USE_VBO_DOUBLE_BUFFERS - if (useBufferB) - { - // Activate Quads VAO (Buffer B) - glBindVertexArray(vaoQuadsB); - - // Quads - vertex positions buffer - glBindBuffer(GL_ARRAY_BUFFER, quadsBufferB[0]); - //glBufferData(GL_ARRAY_BUFFER, sizeof(float)*3*4*MAX_QUADS_BATCH, quads.vertices, GL_DYNAMIC_DRAW); - glBufferSubData(GL_ARRAY_BUFFER, 0, sizeof(float)*3*quads.vCounter, quads.vertices); + // Activate Quads VAO + glBindVertexArray(vaoQuads); + + // Quads - vertex positions buffer + glBindBuffer(GL_ARRAY_BUFFER, quadsBuffer[0]); + //glBufferData(GL_ARRAY_BUFFER, sizeof(float)*3*4*MAX_QUADS_BATCH, quads.vertices, GL_DYNAMIC_DRAW); + glBufferSubData(GL_ARRAY_BUFFER, 0, sizeof(float)*3*quads.vCounter, quads.vertices); - // Quads - texture coordinates buffer - glBindBuffer(GL_ARRAY_BUFFER, quadsBufferB[1]); - //glBufferData(GL_ARRAY_BUFFER, sizeof(float)*2*4*MAX_QUADS_BATCH, quads.texcoords, GL_DYNAMIC_DRAW); - glBufferSubData(GL_ARRAY_BUFFER, 0, sizeof(float)*2*quads.vCounter, quads.texcoords); - - // Quads - colors buffer - glBindBuffer(GL_ARRAY_BUFFER, quadsBufferB[2]); - //glBufferData(GL_ARRAY_BUFFER, sizeof(float)*4*4*MAX_QUADS_BATCH, quads.colors, GL_DYNAMIC_DRAW); - glBufferSubData(GL_ARRAY_BUFFER, 0, sizeof(float)*4*quads.vCounter, quads.colors); - } - else -#endif - { - // Activate Quads VAO (Buffer A) - glBindVertexArray(vaoQuads); - - // Quads - vertex positions buffer - glBindBuffer(GL_ARRAY_BUFFER, quadsBuffer[0]); - //glBufferData(GL_ARRAY_BUFFER, sizeof(float)*3*4*MAX_QUADS_BATCH, quads.vertices, GL_DYNAMIC_DRAW); - glBufferSubData(GL_ARRAY_BUFFER, 0, sizeof(float)*3*quads.vCounter, quads.vertices); - - // Quads - texture coordinates buffer - glBindBuffer(GL_ARRAY_BUFFER, quadsBuffer[1]); - //glBufferData(GL_ARRAY_BUFFER, sizeof(float)*2*4*MAX_QUADS_BATCH, quads.texcoords, GL_DYNAMIC_DRAW); - glBufferSubData(GL_ARRAY_BUFFER, 0, sizeof(float)*2*quads.vCounter, quads.texcoords); - - // Quads - colors buffer - glBindBuffer(GL_ARRAY_BUFFER, quadsBuffer[2]); - //glBufferData(GL_ARRAY_BUFFER, sizeof(float)*4*4*MAX_QUADS_BATCH, quads.colors, GL_DYNAMIC_DRAW); - glBufferSubData(GL_ARRAY_BUFFER, 0, sizeof(float)*4*quads.vCounter, quads.colors); - } + // Quads - texture coordinates buffer + glBindBuffer(GL_ARRAY_BUFFER, quadsBuffer[1]); + //glBufferData(GL_ARRAY_BUFFER, sizeof(float)*2*4*MAX_QUADS_BATCH, quads.texcoords, GL_DYNAMIC_DRAW); + glBufferSubData(GL_ARRAY_BUFFER, 0, sizeof(float)*2*quads.vCounter, quads.texcoords); + // Quads - colors buffer + glBindBuffer(GL_ARRAY_BUFFER, quadsBuffer[2]); + //glBufferData(GL_ARRAY_BUFFER, sizeof(float)*4*4*MAX_QUADS_BATCH, quads.colors, GL_DYNAMIC_DRAW); + glBufferSubData(GL_ARRAY_BUFFER, 0, sizeof(unsigned char)*4*quads.vCounter, quads.colors); // Another option would be using buffer mapping... //triangles.vertices = glMapBuffer(GL_ARRAY_BUFFER, GL_READ_WRITE); diff --git a/src/rlgl.h b/src/rlgl.h index 61e6f8f3a..6ec54331b 100644 --- a/src/rlgl.h +++ b/src/rlgl.h @@ -65,7 +65,7 @@ typedef enum { RL_LINES, RL_TRIANGLES, RL_QUADS } DrawMode; float *vertices; // 3 components per vertex float *texcoords; // 2 components per vertex float *normals; // 3 components per vertex - float *colors; + unsigned char *colors; } VertexData; typedef struct Model { diff --git a/src/text.c b/src/text.c index 87205f672..c8b9f81d3 100644 --- a/src/text.c +++ b/src/text.c @@ -230,12 +230,14 @@ SpriteFont LoadSpriteFont(const char* fileName) // At this point we have a pixel array with all the data... + TraceLog(INFO, "[%s] SpriteFont image loaded: %i x %i", fileName, imgWidth, imgHeight); + // Process bitmap Font pixel data to get measures (Character array) // spriteFont.charSet data is filled inside the function and memory is allocated! int numChars = ParseImageData(imgDataPixel, imgWidth, imgHeight, &spriteFont.charSet); TraceLog(INFO, "[%s] SpriteFont data parsed correctly", fileName); - TraceLog(INFO, "[%s] SpriteFont num chars detected: %i", numChars); + TraceLog(INFO, "[%s] SpriteFont num chars detected: %i", fileName, numChars); spriteFont.numChars = numChars; diff --git a/src/textures.c b/src/textures.c index a21dd4bf7..4bd6378d5 100644 --- a/src/textures.c +++ b/src/textures.c @@ -100,26 +100,30 @@ Image LoadImage(const char *fileName) // Force loading to 4 components (RGBA) byte *imgData = stbi_load(fileName, &imgWidth, &imgHeight, &imgBpp, 4); - // Convert array to pixel array for working convenience - image.pixels = (Color *)malloc(imgWidth * imgHeight * sizeof(Color)); - - int pix = 0; - - for (int i = 0; i < (imgWidth * imgHeight * 4); i += 4) + if (imgData != NULL) { - image.pixels[pix].r = imgData[i]; - image.pixels[pix].g = imgData[i+1]; - image.pixels[pix].b = imgData[i+2]; - image.pixels[pix].a = imgData[i+3]; - pix++; + // Convert array to pixel array for working convenience + image.pixels = (Color *)malloc(imgWidth * imgHeight * sizeof(Color)); + + int pix = 0; + + for (int i = 0; i < (imgWidth * imgHeight * 4); i += 4) + { + image.pixels[pix].r = imgData[i]; + image.pixels[pix].g = imgData[i+1]; + image.pixels[pix].b = imgData[i+2]; + image.pixels[pix].a = imgData[i+3]; + pix++; + } + + stbi_image_free(imgData); + + image.width = imgWidth; + image.height = imgHeight; + + TraceLog(INFO, "[%s] Image loaded successfully", fileName); } - - stbi_image_free(imgData); - - image.width = imgWidth; - image.height = imgHeight; - - TraceLog(INFO, "[%s] Image loaded successfully", fileName); + else TraceLog(WARNING, "[%s] Image could not be loaded", fileName); } else if (strcmp(GetExtension(fileName),"dds") == 0) { diff --git a/tests/resources/cubesmap.png b/tests/resources/cubesmap.png new file mode 100644 index 0000000000000000000000000000000000000000..87b95d5067341865b05e034a184e9d92f8fb7b39 GIT binary patch literal 173 zcmeAS@N?(olHy`uVBq!ia0y~yU|<1Z4mJh`hLs=Z)iE$IFct^7J29*~C-V{{lkVv2 z$iT3%pZiZDD+2=qXMsm#F#`kNVGw3Kp1&f6fq_A+#5JNMI6tkVJh3R1p&&6cuS72| zwM4;0&%pY{*GvWm1_e(S#}J9|WQL~y3Oq~+W<8AJ4MH3|)0mh9p8x;<|39O6s^Wbg UzYT{O7#J8lUHx3vIVCg!06iEmDF6Tf literal 0 HcmV?d00001 diff --git a/tests/test_cubesmap.c b/tests/test_cubesmap.c new file mode 100644 index 000000000..a44abbbcc --- /dev/null +++ b/tests/test_cubesmap.c @@ -0,0 +1,83 @@ +/******************************************************************************************* +* +* raylib test - Testing Heightmap Loading and Drawing +* +* This test has been created using raylib 1.0 (www.raylib.com) +* raylib is licensed under an unmodified zlib/libpng license (View raylib.h for details) +* +* Copyright (c) 2014 Ramon Santamaria (Ray San - raysan@raysanweb.com) +* +********************************************************************************************/ + +#include "../raylib.h" + +int main() +{ + // Initialization + //-------------------------------------------------------------------------------------- + int screenWidth = 800; + int screenHeight = 450; + + Vector3 position = { 0.5, 0.0, 0.5 }; + + // Define the camera to look into our 3d world + Camera camera = {{ 7.0, 6.0, 7.0 }, { 0.0, 0.0, 0.0 }, { 0.0, 1.0, 0.0 }}; + + InitWindow(screenWidth, screenHeight, "raylib test - Heightmap loading and drawing"); + + Image img = LoadImage("resources/cubesmap.png"); + Model map = LoadCubesmap(img); + Texture2D texture = CreateTexture(img, false); + UnloadImage(img); + + SetModelTexture(&map, texture); + + SetTargetFPS(60); // Set our game to run at 60 frames-per-second + //-------------------------------------------------------------------------------------- + + // Main game loop + while (!WindowShouldClose()) // Detect window close button or ESC key + { + // Update + //---------------------------------------------------------------------------------- + if (IsKeyDown(KEY_UP)) camera.position.y += 0.2f; + else if (IsKeyDown(KEY_DOWN)) camera.position.y -= 0.2f; + + if (IsKeyDown(KEY_RIGHT)) camera.position.z += 0.2f; + else if (IsKeyDown(KEY_LEFT)) camera.position.z -= 0.2f; + //---------------------------------------------------------------------------------- + + // Draw + //---------------------------------------------------------------------------------- + BeginDrawing(); + + ClearBackground(RAYWHITE); + + Begin3dMode(camera); + + //DrawCube(position, 1.0f, 1.0f, 1.0f, RED); + + DrawModel(map, position, 1.0f, MAROON); + + DrawGrid(10.0, 1.0); // Draw a grid + + DrawGizmo(position); + + End3dMode(); + + DrawFPS(10, 10); + + EndDrawing(); + //---------------------------------------------------------------------------------- + } + + // De-Initialization + //-------------------------------------------------------------------------------------- + UnloadTexture(texture); // Unload texture + UnloadModel(map); // Unload model + + CloseWindow(); // Close window and OpenGL context + //-------------------------------------------------------------------------------------- + + return 0; +} \ No newline at end of file diff --git a/tests/test_heightmap.c b/tests/test_heightmap.c index 2da5e432e..d01936377 100644 --- a/tests/test_heightmap.c +++ b/tests/test_heightmap.c @@ -30,7 +30,7 @@ int main() Texture2D texture = CreateTexture(img, false); UnloadImage(img); - SetModelTexture(&map, texture); + SetModelTexture(&map, texture); SetTargetFPS(60); // Set our game to run at 60 frames-per-second //-------------------------------------------------------------------------------------- @@ -51,11 +51,11 @@ int main() Begin3dMode(camera); - DrawModel(map, position, 0.5f, MAROON); + DrawModel(map, position, 0.5f, MAROON); DrawGrid(10.0, 1.0); // Draw a grid - DrawGizmo(position, false); + DrawGizmo(position); End3dMode(); @@ -67,7 +67,7 @@ int main() // De-Initialization //-------------------------------------------------------------------------------------- - UnloadTexture(tex); // Unload texture + UnloadTexture(texture); // Unload texture UnloadModel(map); // Unload model CloseWindow(); // Close window and OpenGL context