summaryrefslogtreecommitdiffhomepage
path: root/examples/oculus_glfw_sample/raylib_rlgl_standalone.c
diff options
context:
space:
mode:
Diffstat (limited to 'examples/oculus_glfw_sample/raylib_rlgl_standalone.c')
-rw-r--r--examples/oculus_glfw_sample/raylib_rlgl_standalone.c131
1 files changed, 131 insertions, 0 deletions
diff --git a/examples/oculus_glfw_sample/raylib_rlgl_standalone.c b/examples/oculus_glfw_sample/raylib_rlgl_standalone.c
new file mode 100644
index 00000000..adce9276
--- /dev/null
+++ b/examples/oculus_glfw_sample/raylib_rlgl_standalone.c
@@ -0,0 +1,131 @@
+/*******************************************************************************************
+*
+* 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 rlgl.c -Wall -std=c99 -DRLGL_STANDALONE -DRAYMATH_IMPLEMENTATION -DGRAPHICS_API_OPENGL_33
+*
+* Compile example using:
+* gcc -o $(NAME_PART).exe $(FILE_NAME) rlgl.o glad.o -lglfw3 -lopengl32 -lgdi32 -std=c99
+*
+* This example has been created using raylib 1.5 (www.raylib.com)
+* raylib is licensed under an unmodified zlib/libpng license (View raylib.h for details)
+*
+* Copyright (c) 2015 Ramon Santamaria (@raysan5)
+*
+********************************************************************************************/
+
+#include "glad.h"
+#include <GLFW/glfw3.h>
+
+#define RLGL_STANDALONE
+#include "rlgl.h"
+
+#include <stdlib.h>
+#include <stdio.h>
+
+//----------------------------------------------------------------------------------
+// Module specific Functions Declaration
+//----------------------------------------------------------------------------------
+static void ErrorCallback(int error, const char* description)
+{
+ fputs(description, stderr);
+}
+
+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);
+ }
+}
+
+void DrawRectangleV(Vector2 position, Vector2 size, Color color);
+
+//----------------------------------------------------------------------------------
+// Main Entry point
+//----------------------------------------------------------------------------------
+int main(void)
+{
+ const int screenWidth = 800;
+ const int screenHeight = 450;
+
+ GLFWwindow *window;
+
+ glfwSetErrorCallback(ErrorCallback);
+
+ if (!glfwInit()) exit(EXIT_FAILURE);
+
+ glfwWindowHint(GLFW_SAMPLES, 4);
+ glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 3);
+ glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 3);
+ glfwWindowHint(GLFW_OPENGL_FORWARD_COMPAT, GL_TRUE);
+ glfwWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE);
+
+ window = glfwCreateWindow(screenWidth, screenHeight, "rlgl standalone", NULL, NULL);
+
+ if (!window)
+ {
+ glfwTerminate();
+ exit(EXIT_FAILURE);
+ }
+
+ glfwSetKeyCallback(window, KeyCallback);
+
+ glfwMakeContextCurrent(window);
+ glfwSwapInterval(1);
+
+ if (!gladLoadGLLoader((GLADloadproc)glfwGetProcAddress))
+ {
+ printf("Cannot load GL extensions.\n");
+ exit(1);
+ }
+
+ rlglInit();
+ rlglInitGraphics(0, 0, screenWidth, screenHeight);
+ rlClearColor(245, 245, 245, 255); // Define clear color
+
+ Vector2 position = { screenWidth/2 - 100, screenHeight/2 - 100 };
+ Vector2 size = { 200, 200 };
+ Color color = { 180, 20, 20, 255 };
+
+ while (!glfwWindowShouldClose(window))
+ {
+ rlClearScreenBuffers();
+
+ DrawRectangleV(position, size, color);
+
+ rlglDraw();
+
+ glfwSwapBuffers(window);
+ glfwPollEvents();
+ }
+
+ rlglClose();
+
+ glfwDestroyWindow(window);
+ glfwTerminate();
+
+ return 0;
+}
+
+//----------------------------------------------------------------------------------
+// Module specific Functions Definitions
+//----------------------------------------------------------------------------------
+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();
+} \ No newline at end of file