11#include " Game.hpp"
2- #include " OBJ.hpp"
32#include " check_gl.hpp"
3+ #include < glm/glm.hpp>
4+ #include < glm/ext.hpp>
5+ #include " OBJ.hpp"
46
57struct Game ::Private {
68 OBJ monkey;
@@ -12,6 +14,20 @@ Game::Game(GLFWwindow *window) : m_private(new Private), m_window(window) {
1214
1315Game::~Game () = default ;
1416
17+ void Game::initialize () {
18+ m_private->monkey .load_obj (" /home/bate/Codes/opengltutor/assets/monkey.obj" );
19+ CHECK_GL (glEnable (GL_DEPTH_TEST));
20+ CHECK_GL (glEnable (GL_MULTISAMPLE));
21+ CHECK_GL (glEnable (GL_BLEND));
22+ CHECK_GL (glBlendFunc (GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA));
23+ CHECK_GL (glEnable (GL_LIGHTING));
24+ CHECK_GL (glEnable (GL_LIGHT0));
25+ CHECK_GL (glEnable (GL_COLOR_MATERIAL));
26+ CHECK_GL (glEnable (GL_CULL_FACE));
27+ CHECK_GL (glCullFace (GL_BACK));
28+ CHECK_GL (glFrontFace (GL_CCW));
29+ }
30+
1531void Game::render () {
1632 int width, height;
1733 glfwGetWindowSize (m_window, &width, &height);
@@ -39,34 +55,39 @@ void Game::render() {
3955 CHECK_GL (glMatrixMode (GL_MODELVIEW));
4056 CHECK_GL (glLoadMatrixf (glm::value_ptr (view * model)));
4157
42- m_monkey.draw_obj ();
58+ m_private->monkey .draw_obj ();
59+ }
60+
61+ void Game::cursor_pos_callback (double xpos, double ypos) {
62+ int width, height;
63+ glfwGetWindowSize (m_window, &width, &height);
64+
65+ float x = (float )(2 * xpos / width - 1 );
66+ float y = (float )(2 * (height - ypos) / height - 1 );
67+
68+ if (glfwGetMouseButton (m_window, GLFW_MOUSE_BUTTON_LEFT) == GLFW_PRESS) {
69+ // TODO: when left mouse button is dragged
70+ }
4371}
4472
4573void Game::mouse_button_callback (int button, int action, int mods) {
4674 double xpos, ypos;
47- int width, height;
4875 glfwGetCursorPos (m_window, &xpos, &ypos);
76+ int width, height;
4977 glfwGetWindowSize (m_window, &width, &height);
5078
5179 float x = (float )(2 * xpos / width - 1 );
5280 float y = (float )(2 * (height - ypos) / height - 1 );
5381
5482 if ( button == GLFW_MOUSE_BUTTON_LEFT
5583 && action == GLFW_PRESS
56- ) { // when left mouse button is pressed:
84+ ) {
85+ // TODO: when left mouse button is pressed
5786 }
5887}
5988
60- void Game::initialize () {
61- m_private->monkey .load_obj (" /home/bate/Codes/opengltutor/assets/monkey.obj" );
62- CHECK_GL (glEnable (GL_DEPTH_TEST));
63- CHECK_GL (glEnable (GL_MULTISAMPLE));
64- CHECK_GL (glEnable (GL_BLEND));
65- CHECK_GL (glBlendFunc (GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA));
66- CHECK_GL (glEnable (GL_LIGHTING));
67- CHECK_GL (glEnable (GL_LIGHT0));
68- CHECK_GL (glEnable (GL_COLOR_MATERIAL));
69- CHECK_GL (glEnable (GL_CULL_FACE));
70- CHECK_GL (glCullFace (GL_BACK));
71- CHECK_GL (glFrontFace (GL_CCW));
89+ void Game::scroll_callback (double xoffset, double yoffset) {
90+ }
91+
92+ void Game::key_callback (int key, int scancode, int action, int mods) {
7293}
0 commit comments