init
This commit is contained in:
commit
444f800536
122 changed files with 17137 additions and 0 deletions
55
shared/HelpersGLFW.cpp
Normal file
55
shared/HelpersGLFW.cpp
Normal file
|
|
@ -0,0 +1,55 @@
|
|||
#include "HelpersGLFW.h"
|
||||
|
||||
GLFWwindow* initWindow(const char* windowTitle, uint32_t& outWidth, uint32_t& outHeight)
|
||||
{
|
||||
glfwSetErrorCallback([](int error, const char* description) { printf("GLFW Error (%i): %s\n", error, description); });
|
||||
|
||||
if (!glfwInit()) {
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
const bool wantsWholeArea = !outWidth || !outHeight;
|
||||
|
||||
glfwWindowHint(GLFW_CLIENT_API, GLFW_NO_API);
|
||||
glfwWindowHint(GLFW_RESIZABLE, wantsWholeArea ? GLFW_FALSE : GLFW_TRUE);
|
||||
|
||||
// render full screen without overlapping taskbar
|
||||
GLFWmonitor* monitor = glfwGetPrimaryMonitor();
|
||||
const GLFWvidmode* mode = glfwGetVideoMode(monitor);
|
||||
|
||||
int x = 0;
|
||||
int y = 0;
|
||||
int w = mode->width;
|
||||
int h = mode->height;
|
||||
|
||||
if (wantsWholeArea) {
|
||||
glfwGetMonitorWorkarea(monitor, &x, &y, &w, &h);
|
||||
} else {
|
||||
w = outWidth;
|
||||
h = outHeight;
|
||||
}
|
||||
|
||||
GLFWwindow* window = glfwCreateWindow(w, h, windowTitle, nullptr, nullptr);
|
||||
|
||||
if (!window) {
|
||||
glfwTerminate();
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
if (wantsWholeArea) {
|
||||
glfwSetWindowPos(window, x, y);
|
||||
}
|
||||
|
||||
glfwGetWindowSize(window, &w, &h);
|
||||
|
||||
glfwSetKeyCallback(window, [](GLFWwindow* window, int key, int, int action, int) {
|
||||
if (key == GLFW_KEY_ESCAPE && action == GLFW_PRESS) {
|
||||
glfwSetWindowShouldClose(window, GLFW_TRUE);
|
||||
}
|
||||
});
|
||||
|
||||
outWidth = (uint32_t)w;
|
||||
outHeight = (uint32_t)h;
|
||||
|
||||
return window;
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue