main.c 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. #include "renderer.h"
  2. #include <stdio.h>
  3. #include <assert.h>
  4. #include <glad/glad.h>
  5. #include <GLFW/glfw3.h>
  6. #define WINDOW_WIDTH 1200
  7. #define WINDOW_HEIGHT 800
  8. #define MAX_VERTEX_BUFFER 512 * 1024
  9. #define MAX_ELEMENT_BUFFER 128 * 1024
  10. static void error_callback(int e, const char* d) {
  11. fprintf(stderr, "ERROR: %d: %s\n", e, d);
  12. }
  13. void resize_window_callback(GLFWwindow* window, int width, int height) {
  14. glViewport(0, 0, width, height);
  15. }
  16. void key_callback(GLFWwindow *window, int key, int scancode, int action, int mods)
  17. {
  18. if(key == GLFW_KEY_ESCAPE && action == GLFW_RELEASE) {
  19. glfwSetWindowShouldClose(window, GLFW_TRUE);
  20. }
  21. }
  22. int main() {
  23. Renderer renderer = {0};
  24. RENDERER_ERROR err = renderer_init(&renderer, WINDOW_WIDTH, WINDOW_HEIGHT);
  25. if (err != RENDERER_ERROR_OK) {
  26. ERROR_AND_QUIT(err, "could not initialize glfw");
  27. }
  28. glfwSetErrorCallback(error_callback);
  29. glfwSetKeyCallback(renderer.window, key_callback);
  30. while (!glfwWindowShouldClose(renderer.window)) {
  31. glfwPollEvents();
  32. glfwGetWindowSize(renderer.window, &renderer.width, &renderer.height);
  33. glViewport(0, 0, renderer.width, renderer.height);
  34. glClear(GL_COLOR_BUFFER_BIT);
  35. glClearColor(0.8f, 0.8f, 0.8f, 1.0f);
  36. render_quad(&renderer,
  37. (vec2){ renderer.width * 0.5f, renderer.height * 0.5f },
  38. (vec2){ 50.0f, 50.0f },
  39. (vec4) { 0.4f, 1.0f, 0.8f, 1.0f });
  40. glfwSwapBuffers(renderer.window);
  41. }
  42. renderer_destroy(&renderer);
  43. return 0;
  44. }