Window.cpp 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. #include <iostream>
  2. #include "rendering/wrapper/Window.h"
  3. Window::Window(const WindowSize& size, const char* windowName) : window(nullptr) {
  4. glfwDefaultWindowHints();
  5. glfwWindowHint(GLFW_VISIBLE, 0);
  6. glfwWindowHint(GLFW_RESIZABLE, 1);
  7. glfwWindowHint(GLFW_DECORATED, 0);
  8. glfwWindowHint(GLFW_CLIENT_API, GLFW_OPENGL_ES_API);
  9. glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 3);
  10. glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 0);
  11. window = glfwCreateWindow(size.width, size.height, windowName, glfwGetPrimaryMonitor(), nullptr);
  12. if(window == nullptr) {
  13. std::cout << "could not create window\n";
  14. return;
  15. }
  16. glfwSetInputMode(window, GLFW_CURSOR, GLFW_CURSOR_HIDDEN);
  17. glfwMakeContextCurrent(window);
  18. glfwSwapInterval(1);
  19. glfwSetWindowUserPointer(window, this);
  20. }
  21. Window::~Window() {
  22. if(window != nullptr) {
  23. glfwDestroyWindow(window);
  24. }
  25. }
  26. bool Window::hasError() const {
  27. return window == nullptr;
  28. }
  29. void Window::show() {
  30. glfwShowWindow(window);
  31. }
  32. bool Window::shouldClose() const {
  33. return glfwWindowShouldClose(window);
  34. }
  35. void Window::swapBuffers() {
  36. glfwSwapBuffers(window);
  37. glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
  38. }
  39. void Window::setFramebufferSizeCallback(GLFWframebuffersizefun f) {
  40. glfwSetFramebufferSizeCallback(window, f);
  41. }
  42. void Window::setKeyCallback(GLFWkeyfun f) {
  43. glfwSetKeyCallback(window, f);
  44. }
  45. void Window::setMouseButtonCallback(GLFWmousebuttonfun f) {
  46. glfwSetMouseButtonCallback(window, f);
  47. }
  48. void Window::setCursorPosCallback(GLFWcursorposfun f) {
  49. glfwSetCursorPosCallback(window, f);
  50. }