| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139 |
- /*
- * Copyright 2011-2015 Branimir Karadzic. All rights reserved.
- * License: http://www.opensource.org/licenses/BSD-2-Clause
- */
- #include "entry_p.h"
- #if ENTRY_CONFIG_USE_GLFW
- #define GLFW_DLL
- #include <GLFW/glfw3.h>
- #include <bgfx/bgfxplatform.h>
- #include "dbg.h"
- // This is just trivial implementation of GLFW3 integration.
- // It's here just for testing purpose.
- namespace entry
- {
- static void errorCb(int _error, const char* _description)
- {
- DBG("GLFW error %d: %s", _error, _description);
- }
- struct Context
- {
- Context()
- {
- }
- int run(int _argc, char** _argv)
- {
- glfwSetErrorCallback(errorCb);
- glfwInit();
- m_window = glfwCreateWindow(1280, 720, "bgfx", NULL, NULL);
- glfwMakeContextCurrent(m_window);
- glfwSetKeyCallback(m_window, keyCb);
- bgfx::glfwSetWindow(m_window);
- int result = main(_argc, _argv);
- glfwDestroyWindow(m_window);
- glfwTerminate();
- return result;
- }
- static void keyCb(GLFWwindow* _window, int _key, int _scancode, int _action, int _mods);
- EventQueue m_eventQueue;
- GLFWwindow* m_window;
- };
- Context s_ctx;
- void Context::keyCb(GLFWwindow* _window, int _key, int _scancode, int _action, int _mods)
- {
- BX_UNUSED(_window, _scancode, _mods);
- if (_key == GLFW_KEY_Q
- && _action == GLFW_PRESS
- && _mods == GLFW_MOD_CONTROL)
- {
- s_ctx.m_eventQueue.postExitEvent();
- }
- }
- const Event* poll()
- {
- glfwPollEvents();
- if (glfwWindowShouldClose(s_ctx.m_window) )
- {
- s_ctx.m_eventQueue.postExitEvent();
- }
- return s_ctx.m_eventQueue.poll();
- }
- const Event* poll(WindowHandle _handle)
- {
- return s_ctx.m_eventQueue.poll(_handle);
- }
- void release(const Event* _event)
- {
- s_ctx.m_eventQueue.release(_event);
- }
- WindowHandle createWindow(int32_t _x, int32_t _y, uint32_t _width, uint32_t _height, uint32_t _flags, const char* _title)
- {
- BX_UNUSED(_x, _y, _width, _height, _flags, _title);
- WindowHandle handle = { UINT16_MAX };
- return handle;
- }
- void destroyWindow(WindowHandle _handle)
- {
- BX_UNUSED(_handle);
- }
- void setWindowPos(WindowHandle _handle, int32_t _x, int32_t _y)
- {
- BX_UNUSED(_handle, _x, _y);
- }
- void setWindowSize(WindowHandle _handle, uint32_t _width, uint32_t _height)
- {
- BX_UNUSED(_handle, _width, _height);
- }
- void setWindowTitle(WindowHandle _handle, const char* _title)
- {
- BX_UNUSED(_handle, _title);
- }
- void toggleWindowFrame(WindowHandle _handle)
- {
- BX_UNUSED(_handle);
- }
- void toggleFullscreen(WindowHandle _handle)
- {
- BX_UNUSED(_handle);
- }
- void setMouseLock(WindowHandle _handle, bool _lock)
- {
- BX_UNUSED(_handle, _lock);
- }
- }
- int main(int _argc, char** _argv)
- {
- using namespace entry;
- return s_ctx.run(_argc, _argv);
- }
- #endif // ENTRY_CONFIG_USE_GLFW
|