diff -ru a/cmake/FindGLFW.cmake b/cmake/FindGLFW.cmake --- cmake/FindGLFW.cmake 2013-04-29 10:26:36.000000000 +0200 +++ cmake/FindGLFW.cmake 2015-08-07 03:00:59.635191268 +0200 @@ -3,7 +3,7 @@ ################################################################################ include(FindPackageHandleStandardArgs) -find_path(GLFW_H_PATH NAMES GL/glfw.h glfw.h) +find_path(GLFW_H_PATH NAMES GLFW/glfw3.h) find_library(GLFW_LIB NAMES glfw PATH_SUFFIXES dynamic) find_library(GLFW_LIB_DBG NAMES glfw_d PATH_SUFFIXES dynamic) mark_as_advanced(GLFW_H_PATH GLFW_LIB GLFW_LIB_DBG) diff -ru a/samples_framework/include/CEGuiGLFWSharedBase.h b/samples_framework/include/CEGuiGLFWSharedBase.h --- samples_framework/include/CEGuiGLFWSharedBase.h 2014-07-07 09:06:18.000000000 +0200 +++ samples_framework/include/CEGuiGLFWSharedBase.h 2015-08-07 02:53:29.225235807 +0200 @@ -29,7 +29,7 @@ #include "CEGuiBaseApplication.h" #include "CEGUI/MouseCursor.h" -#include +#include class SamplesFrameworkBase; @@ -55,14 +55,14 @@ void drawFrame(); - static void GLFWCALL glfwKeyCallback(int key, int action); - static void GLFWCALL glfwCharCallback(int character, int action); - static void GLFWCALL glfwMouseButtonCallback(int key, int action); - static void GLFWCALL glfwMouseWheelCallback(int position); - static void GLFWCALL glfwMousePosCallback(int x, int y ); + static void glfwKeyCallback(GLFWwindow* window, int key, int scancode, int action, int mods); + static void glfwCharCallback(GLFWwindow* window, unsigned int character); + static void glfwMouseButtonCallback(GLFWwindow* window, int key, int action, int mods); + static void glfwScrollCallback(GLFWwindow* window, double xoffset, double yoffset); + static void glfwCursorPosCallback(GLFWwindow* window, double x, double y); - static int GLFWCALL glfwWindowCloseCallback(void); - static void GLFWCALL glfwWindowResizeCallback(int width, int height); + static void glfwWindowCloseCallback(GLFWwindow* window); + static void glfwWindowResizeCallback(GLFWwindow* window, int width, int height); static CEGUI::Key::Scan GlfwToCeguiKey(int glfwKey); static CEGUI::MouseButton GlfwToCeguiMouseButton(int glfwButton); @@ -71,6 +71,7 @@ Data fields *************************************************************************/ static CEGuiGLFWSharedBase* d_appInstance; + static GLFWwindow* d_window; static double d_frameTime; static int d_modifiers; @@ -80,8 +81,8 @@ static bool d_mouseLeftWindow; static bool d_mouseDisableCalled; - static int d_oldMousePosX; - static int d_oldMousePosY; + static double d_oldMousePosX; + static double d_oldMousePosY; }; diff -ru a/samples_framework/src/CEGuiGLFWSharedBase.cpp b/samples_framework/src/CEGuiGLFWSharedBase.cpp --- samples_framework/src/CEGuiGLFWSharedBase.cpp 2014-07-07 09:06:18.000000000 +0200 +++ samples_framework/src/CEGuiGLFWSharedBase.cpp 2015-08-07 02:59:43.268198820 +0200 @@ -38,6 +38,7 @@ //----------------------------------------------------------------------------// CEGuiGLFWSharedBase* CEGuiGLFWSharedBase::d_appInstance = 0; +GLFWwindow* CEGuiGLFWSharedBase::d_window = 0; double CEGuiGLFWSharedBase::d_frameTime = 0; int CEGuiGLFWSharedBase::d_modifiers = 0; bool CEGuiGLFWSharedBase::d_windowSized = false; @@ -45,8 +46,8 @@ int CEGuiGLFWSharedBase::d_newWindowHeight = CEGuiGLFWSharedBase::s_defaultWindowWidth; bool CEGuiGLFWSharedBase::d_mouseLeftWindow = false; bool CEGuiGLFWSharedBase::d_mouseDisableCalled = false; -int CEGuiGLFWSharedBase::d_oldMousePosX = 0; -int CEGuiGLFWSharedBase::d_oldMousePosY = 0; +double CEGuiGLFWSharedBase::d_oldMousePosX = 0; +double CEGuiGLFWSharedBase::d_oldMousePosY = 0; //----------------------------------------------------------------------------// CEGuiGLFWSharedBase::CEGuiGLFWSharedBase() @@ -69,23 +70,22 @@ d_sampleApp->initialise(); // Input callbacks of glfw for CEGUI - glfwSetKeyCallback(glfwKeyCallback); - glfwSetCharCallback(glfwCharCallback); - glfwSetMouseButtonCallback(glfwMouseButtonCallback); - glfwSetMouseWheelCallback(glfwMouseWheelCallback); - glfwSetMousePosCallback(glfwMousePosCallback); + glfwSetKeyCallback(d_window, glfwKeyCallback); + glfwSetCharCallback(d_window, glfwCharCallback); + glfwSetMouseButtonCallback(d_window, glfwMouseButtonCallback); + glfwSetScrollCallback(d_window, glfwScrollCallback); + glfwSetCursorPosCallback(d_window, glfwCursorPosCallback); //Window callbacks - glfwSetWindowCloseCallback(glfwWindowCloseCallback); - glfwSetWindowSizeCallback(glfwWindowResizeCallback); + glfwSetWindowCloseCallback(d_window, glfwWindowCloseCallback); + glfwSetWindowSizeCallback(d_window, glfwWindowResizeCallback); d_windowSized = false; //The resize callback is being called immediately after setting it in this version of glfw glClearColor(0.0f, 0.0f, 0.0f, 0.0f); // set starting time d_frameTime = glfwGetTime(); - while (!d_sampleApp->isQuitting() && - glfwGetWindowParam(GLFW_OPENED)) + while (!d_sampleApp->isQuitting()) { if (d_windowSized) { @@ -116,7 +116,8 @@ //----------------------------------------------------------------------------// void CEGuiGLFWSharedBase::endRendering() { - glfwSwapBuffers(); + glfwPollEvents(); + glfwSwapBuffers(d_window); } //----------------------------------------------------------------------------// @@ -131,14 +132,13 @@ } //----------------------------------------------------------------------------// -int CEGuiGLFWSharedBase::glfwWindowCloseCallback(void) +void CEGuiGLFWSharedBase::glfwWindowCloseCallback(GLFWwindow* window) { d_sampleApp->setQuitting(true); - return GL_TRUE; } //----------------------------------------------------------------------------// -void CEGuiGLFWSharedBase::glfwWindowResizeCallback(int w, int h) +void CEGuiGLFWSharedBase::glfwWindowResizeCallback(GLFWwindow* window, int w, int h) { // We cache this in order to minimise calls to notifyDisplaySizeChanged, // which happens in the main loop whenever d_windowSized is set to true. @@ -152,43 +152,43 @@ { switch(glfwKey) { - case GLFW_KEY_ESC : return CEGUI::Key::Escape; - case GLFW_KEY_F1 : return CEGUI::Key::F1; - case GLFW_KEY_F2 : return CEGUI::Key::F2; - case GLFW_KEY_F3 : return CEGUI::Key::F3; - case GLFW_KEY_F4 : return CEGUI::Key::F4; - case GLFW_KEY_F5 : return CEGUI::Key::F5; - case GLFW_KEY_F6 : return CEGUI::Key::F6; - case GLFW_KEY_F7 : return CEGUI::Key::F7; - case GLFW_KEY_F8 : return CEGUI::Key::F8; - case GLFW_KEY_F9 : return CEGUI::Key::F9; - case GLFW_KEY_F10 : return CEGUI::Key::F10; - case GLFW_KEY_F11 : return CEGUI::Key::F11; - case GLFW_KEY_F12 : return CEGUI::Key::F12; - case GLFW_KEY_F13 : return CEGUI::Key::F13; - case GLFW_KEY_F14 : return CEGUI::Key::F14; - case GLFW_KEY_F15 : return CEGUI::Key::F15; - case GLFW_KEY_UP : return CEGUI::Key::ArrowUp; - case GLFW_KEY_DOWN : return CEGUI::Key::ArrowDown; - case GLFW_KEY_LEFT : return CEGUI::Key::ArrowLeft; - case GLFW_KEY_RIGHT : return CEGUI::Key::ArrowRight; - case GLFW_KEY_LSHIFT : return CEGUI::Key::LeftShift; - case GLFW_KEY_RSHIFT : return CEGUI::Key::RightShift; - case GLFW_KEY_LCTRL : return CEGUI::Key::LeftControl; - case GLFW_KEY_RCTRL : return CEGUI::Key::RightControl; - case GLFW_KEY_LALT : return CEGUI::Key::LeftAlt; - case GLFW_KEY_RALT : return CEGUI::Key::RightAlt; - case GLFW_KEY_TAB : return CEGUI::Key::Tab; - case GLFW_KEY_ENTER : return CEGUI::Key::Return; - case GLFW_KEY_BACKSPACE : return CEGUI::Key::Backspace; - case GLFW_KEY_INSERT : return CEGUI::Key::Insert; - case GLFW_KEY_DEL : return CEGUI::Key::Delete; - case GLFW_KEY_PAGEUP : return CEGUI::Key::PageUp; - case GLFW_KEY_PAGEDOWN : return CEGUI::Key::PageDown; - case GLFW_KEY_HOME : return CEGUI::Key::Home; - case GLFW_KEY_END : return CEGUI::Key::End; - case GLFW_KEY_KP_ENTER : return CEGUI::Key::NumpadEnter; - default : return CEGUI::Key::Unknown; + case GLFW_KEY_ESCAPE : return CEGUI::Key::Escape; + case GLFW_KEY_F1 : return CEGUI::Key::F1; + case GLFW_KEY_F2 : return CEGUI::Key::F2; + case GLFW_KEY_F3 : return CEGUI::Key::F3; + case GLFW_KEY_F4 : return CEGUI::Key::F4; + case GLFW_KEY_F5 : return CEGUI::Key::F5; + case GLFW_KEY_F6 : return CEGUI::Key::F6; + case GLFW_KEY_F7 : return CEGUI::Key::F7; + case GLFW_KEY_F8 : return CEGUI::Key::F8; + case GLFW_KEY_F9 : return CEGUI::Key::F9; + case GLFW_KEY_F10 : return CEGUI::Key::F10; + case GLFW_KEY_F11 : return CEGUI::Key::F11; + case GLFW_KEY_F12 : return CEGUI::Key::F12; + case GLFW_KEY_F13 : return CEGUI::Key::F13; + case GLFW_KEY_F14 : return CEGUI::Key::F14; + case GLFW_KEY_F15 : return CEGUI::Key::F15; + case GLFW_KEY_UP : return CEGUI::Key::ArrowUp; + case GLFW_KEY_DOWN : return CEGUI::Key::ArrowDown; + case GLFW_KEY_LEFT : return CEGUI::Key::ArrowLeft; + case GLFW_KEY_RIGHT : return CEGUI::Key::ArrowRight; + case GLFW_KEY_LEFT_SHIFT : return CEGUI::Key::LeftShift; + case GLFW_KEY_RIGHT_SHIFT : return CEGUI::Key::RightShift; + case GLFW_KEY_LEFT_CONTROL : return CEGUI::Key::LeftControl; + case GLFW_KEY_RIGHT_CONTROL: return CEGUI::Key::RightControl; + case GLFW_KEY_LEFT_ALT : return CEGUI::Key::LeftAlt; + case GLFW_KEY_RIGHT_ALT : return CEGUI::Key::RightAlt; + case GLFW_KEY_TAB : return CEGUI::Key::Tab; + case GLFW_KEY_ENTER : return CEGUI::Key::Return; + case GLFW_KEY_BACKSPACE : return CEGUI::Key::Backspace; + case GLFW_KEY_INSERT : return CEGUI::Key::Insert; + case GLFW_KEY_DELETE : return CEGUI::Key::Delete; + case GLFW_KEY_PAGE_UP : return CEGUI::Key::PageUp; + case GLFW_KEY_PAGE_DOWN : return CEGUI::Key::PageDown; + case GLFW_KEY_HOME : return CEGUI::Key::Home; + case GLFW_KEY_END : return CEGUI::Key::End; + case GLFW_KEY_KP_ENTER : return CEGUI::Key::NumpadEnter; + default : return CEGUI::Key::Unknown; } } @@ -205,7 +205,7 @@ } //----------------------------------------------------------------------------// -void GLFWCALL CEGuiGLFWSharedBase::glfwKeyCallback(int key, int action) +void CEGuiGLFWSharedBase::glfwKeyCallback(GLFWwindow* window, int key, int scancode, int action, int mods) { CEGUI::Key::Scan ceguiKey = GlfwToCeguiKey(key); @@ -216,14 +216,13 @@ } //----------------------------------------------------------------------------// -void GLFWCALL CEGuiGLFWSharedBase::glfwCharCallback(int character, int action) +void CEGuiGLFWSharedBase::glfwCharCallback(GLFWwindow* window, unsigned int character) { - if(action == GLFW_PRESS) - d_sampleApp->injectChar(character); + d_sampleApp->injectChar(character); } //----------------------------------------------------------------------------// -void GLFWCALL CEGuiGLFWSharedBase::glfwMouseButtonCallback(int key, int action) +void CEGuiGLFWSharedBase::glfwMouseButtonCallback(GLFWwindow* window, int key, int action, int mods) { CEGUI::MouseButton ceguiMouseButton = GlfwToCeguiMouseButton(key); @@ -234,28 +233,28 @@ } //----------------------------------------------------------------------------// -void GLFWCALL CEGuiGLFWSharedBase::glfwMouseWheelCallback(int position) +void CEGuiGLFWSharedBase::glfwScrollCallback(GLFWwindow* window, double xoffset, double yoffset) { - static int lastPosition = 0; - d_sampleApp->injectMouseWheelChange(static_cast(position - lastPosition)); - lastPosition = position; + static double lastPosition = 0; + d_sampleApp->injectMouseWheelChange(yoffset - lastPosition); + lastPosition = yoffset; } //----------------------------------------------------------------------------// -void GLFWCALL CEGuiGLFWSharedBase::glfwMousePosCallback(int x, int y) +void CEGuiGLFWSharedBase::glfwCursorPosCallback(GLFWwindow* window, double x, double y) { if (!d_mouseDisableCalled) { // if cursor didn't leave the window nothing changes - d_sampleApp->injectMousePosition(static_cast(x), static_cast(y)); + d_sampleApp->injectMousePosition(x, y); } else { // if the cursor left the window, we need to use the saved position // because glfw beams the cursor to the middle of the window if // the cursor is disabled - d_sampleApp->injectMousePosition(static_cast(d_oldMousePosX), static_cast(d_oldMousePosY)); - glfwSetMousePos(d_oldMousePosX, d_oldMousePosY); + d_sampleApp->injectMousePosition(d_oldMousePosX, d_oldMousePosY); + glfwSetCursorPos(d_window, d_oldMousePosX, d_oldMousePosY); d_mouseDisableCalled = false; } @@ -265,10 +264,10 @@ || y > d_newWindowHeight) { // show cursor - glfwEnable(GLFW_MOUSE_CURSOR); + glfwSetInputMode(d_window, GLFW_CURSOR, GLFW_CURSOR_NORMAL); // move the cursor to the position where it left the window - glfwSetMousePos(x, y); + glfwSetCursorPos(d_window, x, y); // "note down" that the cursor left the window d_mouseLeftWindow = true; @@ -278,7 +277,7 @@ if (d_mouseLeftWindow) { // get cursor position to restore afterwards - glfwGetMousePos(&d_oldMousePosX, &d_oldMousePosY); + glfwGetCursorPos(d_window, &d_oldMousePosX, &d_oldMousePosY); // we need to inject the previous cursor position because // glfw moves the cursor to the centre of the render @@ -287,7 +286,7 @@ d_mouseDisableCalled = true; // disable cursor - glfwDisable(GLFW_MOUSE_CURSOR); + glfwSetInputMode(d_window, GLFW_CURSOR, GLFW_CURSOR_DISABLED); // "note down" that the cursor is back in the render window d_mouseLeftWindow = false; @@ -306,24 +305,26 @@ //----------------------------------------------------------------------------// void CEGuiGLFWSharedBase::createGLFWWindow() { - if (glfwOpenWindow(s_defaultWindowWidth, s_defaultWindowHeight, 0, 0, 0, 0, 24, 8, GLFW_WINDOW) != GL_TRUE) + d_window = glfwCreateWindow(s_defaultWindowWidth, s_defaultWindowHeight, "Title", glfwGetPrimaryMonitor(), NULL); + if (NULL == d_window) { CEGUI_THROW(CEGUI::RendererException("Failed to open GLFW window.")); glfwTerminate(); } + glfwMakeContextCurrent(d_window); } //----------------------------------------------------------------------------// void CEGuiGLFWSharedBase::setGLFWAppConfiguration() { - glfwSetWindowTitle("Crazy Eddie's GUI Mk-2 - Sample Application"); + glfwSetWindowTitle(d_window, "Crazy Eddie's GUI Mk-2 - Sample Application"); //Deactivate VSYNC glfwSwapInterval(0); // Disable the mouse position in Non_Debug mode #ifndef DEBUG - glfwDisable(GLFW_MOUSE_CURSOR); + glfwSetInputMode(d_window, GLFW_CURSOR, GLFW_CURSOR_DISABLED); #endif // Clear Errors by GLFW, even if Setup is correct. glGetError(); diff -ru a/samples_framework/src/CEGuiOpenGL3BaseApplication.cpp b/samples_framework/src/CEGuiOpenGL3BaseApplication.cpp --- samples_framework/src/CEGuiOpenGL3BaseApplication.cpp 2014-07-07 09:06:18.000000000 +0200 +++ samples_framework/src/CEGuiOpenGL3BaseApplication.cpp 2015-08-07 01:08:14.443860247 +0200 @@ -55,9 +55,9 @@ //----------------------------------------------------------------------------// void CEGuiOpenGL3BaseApplication::setGLFWWindowCreationHints() { - glfwOpenWindowHint(GLFW_OPENGL_VERSION_MAJOR, 3); - glfwOpenWindowHint(GLFW_OPENGL_VERSION_MINOR, 2); - glfwOpenWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE); + glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 3); + glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 2); + glfwWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE); } //----------------------------------------------------------------------------// diff -ru a/samples_framework/src/CEGuiOpenGLBaseApplication.cpp b/samples_framework/src/CEGuiOpenGLBaseApplication.cpp --- samples_framework/src/CEGuiOpenGLBaseApplication.cpp 2014-07-07 09:06:18.000000000 +0200 +++ samples_framework/src/CEGuiOpenGLBaseApplication.cpp 2015-08-07 02:03:40.098531388 +0200 @@ -55,8 +55,8 @@ //----------------------------------------------------------------------------// void CEGuiOpenGLBaseApplication::setGLFWWindowCreationHints() { - glfwOpenWindowHint(GLFW_OPENGL_VERSION_MAJOR, 1); - glfwOpenWindowHint(GLFW_OPENGL_VERSION_MINOR, 2); + glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 1); + glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 2); } //----------------------------------------------------------------------------//