Window.cpp 1.6 KB

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