|  | /******************************************************************************************* | 
						
						
							|  | * | 
						
						
							|  | *   raylib [rlgl] example - Using rlgl module as standalone module | 
						
						
							|  | * | 
						
						
							|  | *   NOTE: This example requires OpenGL 3.3 or ES2 versions for shaders support, | 
						
						
							|  | *         OpenGL 1.1 does not support shaders but it can also be used. | 
						
						
							|  | * | 
						
						
							|  | *   Compile rlgl module using: | 
						
						
							|  | *       gcc -c $(RAYLIB_DIR)\raylib\src\rlgl.c -DRLGL_STANDALONE -DRAYMATH_IMPLEMENTATION -DGRAPHICS_API_OPENGL_33 / | 
						
						
							|  | *           -I$(RAYLIB_DIR)\raylib\src\external -Wall -std=c99 | 
						
						
							|  | * | 
						
						
							|  | *   NOTE: rlgl module requires the following header-only files: | 
						
						
							|  | *       external/glad.h - OpenGL extensions loader (stripped to only required extensions) | 
						
						
							|  | *       shader_distortion.h - Distortion shader for VR | 
						
						
							|  | *       raymath.h - Vector and matrix math functions | 
						
						
							|  | * | 
						
						
							|  | *   Compile example using: | 
						
						
							|  | *       gcc -o rlgl_standalone.exe rlgl_standalone.c rlgl.o -s $(RAYLIB_DIR)\raylib\raylib_icon -I$(RAYLIB_DIR)\raylib\src / | 
						
						
							|  | *           -L. -L$(RAYLIB_DIR)\raylib\src -lglfw3 -lopengl32 -lgdi32 -Wall -std=c99 | 
						
						
							|  | * | 
						
						
							|  | *   This example has been created using raylib 1.7 (www.raylib.com) | 
						
						
							|  | *   raylib is licensed under an unmodified zlib/libpng license (View raylib.h for details) | 
						
						
							|  | * | 
						
						
							|  | *   Copyright (c) 2017 Ramon Santamaria (@raysan5) | 
						
						
							|  | * | 
						
						
							|  | ********************************************************************************************/ | 
						
						
							|  | 
 | 
						
						
							|  | #include <GLFW/glfw3.h>         // Windows/Context and inputs management | 
						
						
							|  |  | 
						
						
							|  | #define RLGL_STANDALONE | 
						
						
							|  | #include "rlgl.h"               // rlgl library: OpenGL 1.1 immediate-mode style coding | 
						
						
							|  |  | 
						
						
							|  | #define RED        (Color){ 230, 41, 55, 255 }     // Red | 
						
						
							|  | #define RAYWHITE   (Color){ 245, 245, 245, 255 }   // My own White (raylib logo) | 
						
						
							|  | #define DARKGRAY   (Color){ 80, 80, 80, 255 }      // Dark Gray | 
						
						
							|  |  | 
						
						
							|  | //---------------------------------------------------------------------------------- | 
						
						
							|  | // Module specific Functions Declaration | 
						
						
							|  | //---------------------------------------------------------------------------------- | 
						
						
							|  | static void ErrorCallback(int error, const char* description); | 
						
						
							|  | static void KeyCallback(GLFWwindow* window, int key, int scancode, int action, int mods); | 
						
						
							|  | 
 | 
						
						
							|  | // Drawing functions (uses rlgl functionality) | 
						
						
							|  | static void DrawGrid(int slices, float spacing); | 
						
						
							|  | static void DrawCube(Vector3 position, float width, float height, float length, Color color); | 
						
						
							|  | static void DrawCubeWires(Vector3 position, float width, float height, float length, Color color); | 
						
						
							|  | static void DrawRectangleV(Vector2 position, Vector2 size, Color color); | 
						
						
							|  | 
 | 
						
						
							|  | //---------------------------------------------------------------------------------- | 
						
						
							|  | // Main Entry point | 
						
						
							|  | //---------------------------------------------------------------------------------- | 
						
						
							|  | int main(void) | 
						
						
							|  | { | 
						
						
							|  |     // Initialization | 
						
						
							|  |     //-------------------------------------------------------------------------------------- | 
						
						
							|  |     const int screenWidth = 800; | 
						
						
							|  |     const int screenHeight = 450; | 
						
						
							|  |      | 
						
						
							|  |     // GLFW3 Initialization + OpenGL 3.3 Context + Extensions | 
						
						
							|  |     //-------------------------------------------------------- | 
						
						
							|  |     glfwSetErrorCallback(ErrorCallback); | 
						
						
							|  |      | 
						
						
							|  |     if (!glfwInit()) | 
						
						
							|  |     { | 
						
						
							|  |         TraceLog(LOG_WARNING, "GLFW3: Can not initialize GLFW"); | 
						
						
							|  |         return 1; | 
						
						
							|  |     } | 
						
						
							|  |     else TraceLog(LOG_INFO, "GLFW3: GLFW initialized successfully"); | 
						
						
							|  |      | 
						
						
							|  |     glfwWindowHint(GLFW_SAMPLES, 4); | 
						
						
							|  |     glfwWindowHint(GLFW_DEPTH_BITS, 16); | 
						
						
							|  |     glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 3); | 
						
						
							|  |     glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 3); | 
						
						
							|  |     glfwWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE); | 
						
						
							|  |     glfwWindowHint(GLFW_OPENGL_DEBUG_CONTEXT, GL_TRUE); | 
						
						
							|  |     | 
						
						
							|  |     GLFWwindow *window = glfwCreateWindow(screenWidth, screenHeight, "rlgl standalone", NULL, NULL); | 
						
						
							|  |      | 
						
						
							|  |     if (!window) | 
						
						
							|  |     { | 
						
						
							|  |         glfwTerminate(); | 
						
						
							|  |         return 2; | 
						
						
							|  |     } | 
						
						
							|  |     else TraceLog(LOG_INFO, "GLFW3: Window created successfully"); | 
						
						
							|  |      | 
						
						
							|  |     glfwSetWindowPos(window, 200, 200); | 
						
						
							|  |      | 
						
						
							|  |     glfwSetKeyCallback(window, KeyCallback); | 
						
						
							|  |      | 
						
						
							|  |     glfwMakeContextCurrent(window); | 
						
						
							|  |     glfwSwapInterval(1); | 
						
						
							|  |      | 
						
						
							|  |     // Load OpenGL 3.3 supported extensions | 
						
						
							|  |     rlLoadExtensions(glfwGetProcAddress); | 
						
						
							|  |     //-------------------------------------------------------- | 
						
						
							|  |      | 
						
						
							|  |     // Initialize OpenGL context (states and resources) | 
						
						
							|  |     rlglInit(screenWidth, screenHeight); | 
						
						
							|  | 
 | 
						
						
							|  |     // Initialize viewport and internal projection/modelview matrices | 
						
						
							|  |     rlViewport(0, 0, screenWidth, screenHeight); | 
						
						
							|  |     rlMatrixMode(RL_PROJECTION);                        // Switch to PROJECTION matrix | 
						
						
							|  |     rlLoadIdentity();                                   // Reset current matrix (PROJECTION) | 
						
						
							|  |     rlOrtho(0, screenWidth, screenHeight, 0, 0.0f, 1.0f); // Orthographic projection with top-left corner at (0,0) | 
						
						
							|  |     rlMatrixMode(RL_MODELVIEW);                         // Switch back to MODELVIEW matrix | 
						
						
							|  |     rlLoadIdentity();                                   // Reset current matrix (MODELVIEW) | 
						
						
							|  |  | 
						
						
							|  |     rlClearColor(245, 245, 245, 255);                   // Define clear color | 
						
						
							|  |     rlEnableDepthTest();                                // Enable DEPTH_TEST for 3D | 
						
						
							|  |      | 
						
						
							|  |     Camera camera; | 
						
						
							|  |     camera.position = (Vector3){ 5.0f, 5.0f, 5.0f };    // Camera position | 
						
						
							|  |     camera.target = (Vector3){ 0.0f, 0.0f, 0.0f };      // Camera looking at point | 
						
						
							|  |     camera.up = (Vector3){ 0.0f, 1.0f, 0.0f };          // Camera up vector (rotation towards target) | 
						
						
							|  |     camera.fovy = 45.0f;                                // Camera field-of-view Y | 
						
						
							|  |      | 
						
						
							|  |     Vector3 cubePosition = { 0.0f, 0.0f, 0.0f };        // Cube default position (center) | 
						
						
							|  |     //--------------------------------------------------------------------------------------     | 
						
						
							|  |  | 
						
						
							|  |     // Main game loop     | 
						
						
							|  |     while (!glfwWindowShouldClose(window))  | 
						
						
							|  |     { | 
						
						
							|  |         // Update | 
						
						
							|  |         //---------------------------------------------------------------------------------- | 
						
						
							|  |         // ... | 
						
						
							|  |         //---------------------------------------------------------------------------------- | 
						
						
							|  |  | 
						
						
							|  |         // Draw | 
						
						
							|  |         //---------------------------------------------------------------------------------- | 
						
						
							|  |         rlClearScreenBuffers();             // Clear current framebuffer | 
						
						
							|  |  | 
						
						
							|  |             // Draw '3D' elements in the scene | 
						
						
							|  |             //----------------------------------------------- | 
						
						
							|  |             // Calculate projection matrix (from perspective) and view matrix from camera look at | 
						
						
							|  |             Matrix matProj = MatrixPerspective(camera.fovy*DEG2RAD, (double)screenWidth/(double)screenHeight, 0.01, 1000.0); | 
						
						
							|  |             Matrix matView = MatrixLookAt(camera.position, camera.target, camera.up); | 
						
						
							|  | 
 | 
						
						
							|  |             SetMatrixModelview(matView);    // Set internal modelview matrix (default shader) | 
						
						
							|  |             SetMatrixProjection(matProj);   // Set internal projection matrix (default shader) | 
						
						
							|  |  | 
						
						
							|  |             DrawCube(cubePosition, 2.0f, 2.0f, 2.0f, RED); | 
						
						
							|  |             DrawCubeWires(cubePosition, 2.0f, 2.0f, 2.0f, RAYWHITE); | 
						
						
							|  |             DrawGrid(10, 1.0f); | 
						
						
							|  | 
 | 
						
						
							|  |             // NOTE: Internal buffers drawing (3D data) | 
						
						
							|  |             rlglDraw(); | 
						
						
							|  |             //----------------------------------------------- | 
						
						
							|  |              | 
						
						
							|  |             // Draw '2D' elements in the scene (GUI) | 
						
						
							|  |             //----------------------------------------------- | 
						
						
							|  | #define RLGL_CREATE_MATRIX_MANUALLY | 
						
						
							|  | #if defined(RLGL_CREATE_MATRIX_MANUALLY) | 
						
						
							|  |             matProj = MatrixOrtho(0.0, screenWidth, screenHeight, 0.0, 0.0, 1.0); | 
						
						
							|  |             matView = MatrixIdentity(); | 
						
						
							|  |              | 
						
						
							|  |             SetMatrixModelview(matView);    // Set internal modelview matrix (default shader) | 
						
						
							|  |             SetMatrixProjection(matProj);   // Set internal projection matrix (default shader) | 
						
						
							|  |  | 
						
						
							|  | #else   // Let rlgl generate and multiply matrix internally | 
						
						
							|  |  | 
						
						
							|  |             rlMatrixMode(RL_PROJECTION);                            // Enable internal projection matrix | 
						
						
							|  |             rlLoadIdentity();                                       // Reset internal projection matrix | 
						
						
							|  |             rlOrtho(0.0, screenWidth, screenHeight, 0.0, 0.0, 1.0); // Recalculate internal projection matrix | 
						
						
							|  |             rlMatrixMode(RL_MODELVIEW);                             // Enable internal modelview matrix | 
						
						
							|  |             rlLoadIdentity();                                       // Reset internal modelview matrix | 
						
						
							|  | #endif | 
						
						
							|  |             DrawRectangleV((Vector2){ 10.0f, 10.0f }, (Vector2){ 780.0f, 20.0f }, DARKGRAY); | 
						
						
							|  | 
 | 
						
						
							|  |             // NOTE: Internal buffers drawing (2D data) | 
						
						
							|  |             rlglDraw(); | 
						
						
							|  |             //----------------------------------------------- | 
						
						
							|  |              | 
						
						
							|  |         glfwSwapBuffers(window); | 
						
						
							|  |         glfwPollEvents(); | 
						
						
							|  |         //---------------------------------------------------------------------------------- | 
						
						
							|  |     } | 
						
						
							|  | 
 | 
						
						
							|  |     // De-Initialization | 
						
						
							|  |     //-------------------------------------------------------------------------------------- | 
						
						
							|  |     rlglClose();                    // Unload rlgl internal buffers and default shader/texture | 
						
						
							|  |      | 
						
						
							|  |     glfwDestroyWindow(window);      // Close window | 
						
						
							|  |     glfwTerminate();                // Free GLFW3 resources | 
						
						
							|  |     //-------------------------------------------------------------------------------------- | 
						
						
							|  |      | 
						
						
							|  |     return 0; | 
						
						
							|  | } | 
						
						
							|  | 
 | 
						
						
							|  | //---------------------------------------------------------------------------------- | 
						
						
							|  | // Module specific Functions Definitions | 
						
						
							|  | //---------------------------------------------------------------------------------- | 
						
						
							|  |  | 
						
						
							|  | // GLFW3: Error callback | 
						
						
							|  | static void ErrorCallback(int error, const char* description) | 
						
						
							|  | { | 
						
						
							|  |     TraceLog(LOG_ERROR, description); | 
						
						
							|  | } | 
						
						
							|  | 
 | 
						
						
							|  | // GLFW3: Keyboard callback | 
						
						
							|  | static void KeyCallback(GLFWwindow* window, int key, int scancode, int action, int mods) | 
						
						
							|  | { | 
						
						
							|  |     if (key == GLFW_KEY_ESCAPE && action == GLFW_PRESS) | 
						
						
							|  |     { | 
						
						
							|  |         glfwSetWindowShouldClose(window, GL_TRUE); | 
						
						
							|  |     } | 
						
						
							|  | } | 
						
						
							|  | 
 | 
						
						
							|  | // Draw rectangle using rlgl OpenGL 1.1 style coding (translated to OpenGL 3.3 internally) | 
						
						
							|  | static void DrawRectangleV(Vector2 position, Vector2 size, Color color) | 
						
						
							|  | { | 
						
						
							|  |     rlBegin(RL_TRIANGLES); | 
						
						
							|  |         rlColor4ub(color.r, color.g, color.b, color.a); | 
						
						
							|  | 
 | 
						
						
							|  |         rlVertex2i(position.x, position.y); | 
						
						
							|  |         rlVertex2i(position.x, position.y + size.y); | 
						
						
							|  |         rlVertex2i(position.x + size.x, position.y + size.y); | 
						
						
							|  | 
 | 
						
						
							|  |         rlVertex2i(position.x, position.y); | 
						
						
							|  |         rlVertex2i(position.x + size.x, position.y + size.y); | 
						
						
							|  |         rlVertex2i(position.x + size.x, position.y); | 
						
						
							|  |     rlEnd(); | 
						
						
							|  | } | 
						
						
							|  | 
 | 
						
						
							|  | // Draw a grid centered at (0, 0, 0) | 
						
						
							|  | static void DrawGrid(int slices, float spacing) | 
						
						
							|  | { | 
						
						
							|  |     int halfSlices = slices / 2; | 
						
						
							|  | 
 | 
						
						
							|  |     rlBegin(RL_LINES); | 
						
						
							|  |         for(int i = -halfSlices; i <= halfSlices; i++) | 
						
						
							|  |         { | 
						
						
							|  |             if (i == 0) | 
						
						
							|  |             { | 
						
						
							|  |                 rlColor3f(0.5f, 0.5f, 0.5f); | 
						
						
							|  |                 rlColor3f(0.5f, 0.5f, 0.5f); | 
						
						
							|  |                 rlColor3f(0.5f, 0.5f, 0.5f); | 
						
						
							|  |                 rlColor3f(0.5f, 0.5f, 0.5f); | 
						
						
							|  |             } | 
						
						
							|  |             else | 
						
						
							|  |             { | 
						
						
							|  |                 rlColor3f(0.75f, 0.75f, 0.75f); | 
						
						
							|  |                 rlColor3f(0.75f, 0.75f, 0.75f); | 
						
						
							|  |                 rlColor3f(0.75f, 0.75f, 0.75f); | 
						
						
							|  |                 rlColor3f(0.75f, 0.75f, 0.75f); | 
						
						
							|  |             } | 
						
						
							|  | 
 | 
						
						
							|  |             rlVertex3f((float)i*spacing, 0.0f, (float)-halfSlices*spacing); | 
						
						
							|  |             rlVertex3f((float)i*spacing, 0.0f, (float)halfSlices*spacing); | 
						
						
							|  | 
 | 
						
						
							|  |             rlVertex3f((float)-halfSlices*spacing, 0.0f, (float)i*spacing); | 
						
						
							|  |             rlVertex3f((float)halfSlices*spacing, 0.0f, (float)i*spacing); | 
						
						
							|  |         } | 
						
						
							|  |     rlEnd(); | 
						
						
							|  | } | 
						
						
							|  | 
 | 
						
						
							|  | // Draw cube | 
						
						
							|  | // NOTE: Cube position is the center position | 
						
						
							|  | void DrawCube(Vector3 position, float width, float height, float length, Color color) | 
						
						
							|  | { | 
						
						
							|  |     float x = 0.0f; | 
						
						
							|  |     float y = 0.0f; | 
						
						
							|  |     float z = 0.0f; | 
						
						
							|  | 
 | 
						
						
							|  |     rlPushMatrix(); | 
						
						
							|  | 
 | 
						
						
							|  |         // NOTE: Be careful! Function order matters (rotate -> scale -> translate) | 
						
						
							|  |         rlTranslatef(position.x, position.y, position.z); | 
						
						
							|  |         //rlScalef(2.0f, 2.0f, 2.0f); | 
						
						
							|  |         //rlRotatef(45, 0, 1, 0); | 
						
						
							|  |  | 
						
						
							|  |         rlBegin(RL_TRIANGLES); | 
						
						
							|  |             rlColor4ub(color.r, color.g, color.b, color.a); | 
						
						
							|  | 
 | 
						
						
							|  |             // Front Face ----------------------------------------------------- | 
						
						
							|  |             rlVertex3f(x-width/2, y-height/2, z+length/2);  // Bottom Left | 
						
						
							|  |             rlVertex3f(x+width/2, y-height/2, z+length/2);  // Bottom Right | 
						
						
							|  |             rlVertex3f(x-width/2, y+height/2, z+length/2);  // Top Left | 
						
						
							|  |  | 
						
						
							|  |             rlVertex3f(x+width/2, y+height/2, z+length/2);  // Top Right | 
						
						
							|  |             rlVertex3f(x-width/2, y+height/2, z+length/2);  // Top Left | 
						
						
							|  |             rlVertex3f(x+width/2, y-height/2, z+length/2);  // Bottom Right | 
						
						
							|  |  | 
						
						
							|  |             // Back Face ------------------------------------------------------ | 
						
						
							|  |             rlVertex3f(x-width/2, y-height/2, z-length/2);  // Bottom Left | 
						
						
							|  |             rlVertex3f(x-width/2, y+height/2, z-length/2);  // Top Left | 
						
						
							|  |             rlVertex3f(x+width/2, y-height/2, z-length/2);  // Bottom Right | 
						
						
							|  |  | 
						
						
							|  |             rlVertex3f(x+width/2, y+height/2, z-length/2);  // Top Right | 
						
						
							|  |             rlVertex3f(x+width/2, y-height/2, z-length/2);  // Bottom Right | 
						
						
							|  |             rlVertex3f(x-width/2, y+height/2, z-length/2);  // Top Left | 
						
						
							|  |  | 
						
						
							|  |             // Top Face ------------------------------------------------------- | 
						
						
							|  |             rlVertex3f(x-width/2, y+height/2, z-length/2);  // Top Left | 
						
						
							|  |             rlVertex3f(x-width/2, y+height/2, z+length/2);  // Bottom Left | 
						
						
							|  |             rlVertex3f(x+width/2, y+height/2, z+length/2);  // Bottom Right | 
						
						
							|  |  | 
						
						
							|  |             rlVertex3f(x+width/2, y+height/2, z-length/2);  // Top Right | 
						
						
							|  |             rlVertex3f(x-width/2, y+height/2, z-length/2);  // Top Left | 
						
						
							|  |             rlVertex3f(x+width/2, y+height/2, z+length/2);  // Bottom Right | 
						
						
							|  |  | 
						
						
							|  |             // Bottom Face ---------------------------------------------------- | 
						
						
							|  |             rlVertex3f(x-width/2, y-height/2, z-length/2);  // Top Left | 
						
						
							|  |             rlVertex3f(x+width/2, y-height/2, z+length/2);  // Bottom Right | 
						
						
							|  |             rlVertex3f(x-width/2, y-height/2, z+length/2);  // Bottom Left | 
						
						
							|  |  | 
						
						
							|  |             rlVertex3f(x+width/2, y-height/2, z-length/2);  // Top Right | 
						
						
							|  |             rlVertex3f(x+width/2, y-height/2, z+length/2);  // Bottom Right | 
						
						
							|  |             rlVertex3f(x-width/2, y-height/2, z-length/2);  // Top Left | 
						
						
							|  |  | 
						
						
							|  |             // Right face ----------------------------------------------------- | 
						
						
							|  |             rlVertex3f(x+width/2, y-height/2, z-length/2);  // Bottom Right | 
						
						
							|  |             rlVertex3f(x+width/2, y+height/2, z-length/2);  // Top Right | 
						
						
							|  |             rlVertex3f(x+width/2, y+height/2, z+length/2);  // Top Left | 
						
						
							|  |  | 
						
						
							|  |             rlVertex3f(x+width/2, y-height/2, z+length/2);  // Bottom Left | 
						
						
							|  |             rlVertex3f(x+width/2, y-height/2, z-length/2);  // Bottom Right | 
						
						
							|  |             rlVertex3f(x+width/2, y+height/2, z+length/2);  // Top Left | 
						
						
							|  |  | 
						
						
							|  |             // Left Face ------------------------------------------------------ | 
						
						
							|  |             rlVertex3f(x-width/2, y-height/2, z-length/2);  // Bottom Right | 
						
						
							|  |             rlVertex3f(x-width/2, y+height/2, z+length/2);  // Top Left | 
						
						
							|  |             rlVertex3f(x-width/2, y+height/2, z-length/2);  // Top Right | 
						
						
							|  |  | 
						
						
							|  |             rlVertex3f(x-width/2, y-height/2, z+length/2);  // Bottom Left | 
						
						
							|  |             rlVertex3f(x-width/2, y+height/2, z+length/2);  // Top Left | 
						
						
							|  |             rlVertex3f(x-width/2, y-height/2, z-length/2);  // Bottom Right | 
						
						
							|  |         rlEnd(); | 
						
						
							|  |     rlPopMatrix(); | 
						
						
							|  | } | 
						
						
							|  | 
 | 
						
						
							|  | // Draw cube wires | 
						
						
							|  | void DrawCubeWires(Vector3 position, float width, float height, float length, Color color) | 
						
						
							|  | { | 
						
						
							|  |     float x = 0.0f; | 
						
						
							|  |     float y = 0.0f; | 
						
						
							|  |     float z = 0.0f; | 
						
						
							|  | 
 | 
						
						
							|  |     rlPushMatrix(); | 
						
						
							|  | 
 | 
						
						
							|  |         rlTranslatef(position.x, position.y, position.z); | 
						
						
							|  |         //rlRotatef(45, 0, 1, 0); | 
						
						
							|  |  | 
						
						
							|  |         rlBegin(RL_LINES); | 
						
						
							|  |             rlColor4ub(color.r, color.g, color.b, color.a); | 
						
						
							|  | 
 | 
						
						
							|  |             // Front Face ----------------------------------------------------- | 
						
						
							|  |             // Bottom Line | 
						
						
							|  |             rlVertex3f(x-width/2, y-height/2, z+length/2);  // Bottom Left | 
						
						
							|  |             rlVertex3f(x+width/2, y-height/2, z+length/2);  // Bottom Right | 
						
						
							|  |  | 
						
						
							|  |             // Left Line | 
						
						
							|  |             rlVertex3f(x+width/2, y-height/2, z+length/2);  // Bottom Right | 
						
						
							|  |             rlVertex3f(x+width/2, y+height/2, z+length/2);  // Top Right | 
						
						
							|  |  | 
						
						
							|  |             // Top Line | 
						
						
							|  |             rlVertex3f(x+width/2, y+height/2, z+length/2);  // Top Right | 
						
						
							|  |             rlVertex3f(x-width/2, y+height/2, z+length/2);  // Top Left | 
						
						
							|  |  | 
						
						
							|  |             // Right Line | 
						
						
							|  |             rlVertex3f(x-width/2, y+height/2, z+length/2);  // Top Left | 
						
						
							|  |             rlVertex3f(x-width/2, y-height/2, z+length/2);  // Bottom Left | 
						
						
							|  |  | 
						
						
							|  |             // Back Face ------------------------------------------------------ | 
						
						
							|  |             // Bottom Line | 
						
						
							|  |             rlVertex3f(x-width/2, y-height/2, z-length/2);  // Bottom Left | 
						
						
							|  |             rlVertex3f(x+width/2, y-height/2, z-length/2);  // Bottom Right | 
						
						
							|  |  | 
						
						
							|  |             // Left Line | 
						
						
							|  |             rlVertex3f(x+width/2, y-height/2, z-length/2);  // Bottom Right | 
						
						
							|  |             rlVertex3f(x+width/2, y+height/2, z-length/2);  // Top Right | 
						
						
							|  |  | 
						
						
							|  |             // Top Line | 
						
						
							|  |             rlVertex3f(x+width/2, y+height/2, z-length/2);  // Top Right | 
						
						
							|  |             rlVertex3f(x-width/2, y+height/2, z-length/2);  // Top Left | 
						
						
							|  |  | 
						
						
							|  |             // Right Line | 
						
						
							|  |             rlVertex3f(x-width/2, y+height/2, z-length/2);  // Top Left | 
						
						
							|  |             rlVertex3f(x-width/2, y-height/2, z-length/2);  // Bottom Left | 
						
						
							|  |  | 
						
						
							|  |             // Top Face ------------------------------------------------------- | 
						
						
							|  |             // Left Line | 
						
						
							|  |             rlVertex3f(x-width/2, y+height/2, z+length/2);  // Top Left Front | 
						
						
							|  |             rlVertex3f(x-width/2, y+height/2, z-length/2);  // Top Left Back | 
						
						
							|  |  | 
						
						
							|  |             // Right Line | 
						
						
							|  |             rlVertex3f(x+width/2, y+height/2, z+length/2);  // Top Right Front | 
						
						
							|  |             rlVertex3f(x+width/2, y+height/2, z-length/2);  // Top Right Back | 
						
						
							|  |  | 
						
						
							|  |             // Bottom Face  --------------------------------------------------- | 
						
						
							|  |             // Left Line | 
						
						
							|  |             rlVertex3f(x-width/2, y-height/2, z+length/2);  // Top Left Front | 
						
						
							|  |             rlVertex3f(x-width/2, y-height/2, z-length/2);  // Top Left Back | 
						
						
							|  |  | 
						
						
							|  |             // Right Line | 
						
						
							|  |             rlVertex3f(x+width/2, y-height/2, z+length/2);  // Top Right Front | 
						
						
							|  |             rlVertex3f(x+width/2, y-height/2, z-length/2);  // Top Right Back | 
						
						
							|  |         rlEnd(); | 
						
						
							|  |     rlPopMatrix(); | 
						
						
							|  | }
 |