Added glfw and glew errors logging

This commit is contained in:
MihailRis 2023-11-29 23:37:34 +03:00
parent fd679b8320
commit f62279e46a

View File

@ -7,6 +7,8 @@
#include <GLFW/glfw3.h>
using glm::vec4;
using std::cerr;
using std::endl;
GLFWwindow* Window::window = nullptr;
DisplaySettings* Window::settings = nullptr;
@ -79,12 +81,38 @@ void character_callback(GLFWwindow* window, unsigned int codepoint){
Events::codepoints.push_back(codepoint);
}
const char* glfwErrorName(int error) {
switch (error) {
case GLFW_NO_ERROR: return "no error";
case GLFW_NOT_INITIALIZED: return "not initialized";
case GLFW_NO_CURRENT_CONTEXT: return "no current context";
case GLFW_INVALID_ENUM: return "invalid enum";
case GLFW_INVALID_VALUE: return "invalid value";
case GLFW_OUT_OF_MEMORY: return "out of memory";
case GLFW_API_UNAVAILABLE: return "api unavailable";
case GLFW_VERSION_UNAVAILABLE: return "version unavailable";
case GLFW_PLATFORM_ERROR: return "platform error";
case GLFW_FORMAT_UNAVAILABLE: return "format unavailable";
case GLFW_NO_WINDOW_CONTEXT: return "no window context";
default: return "unknown error";
}
}
void error_callback(int error, const char* description) {
cerr << "GLFW error [0x" << std::hex << error << "]: ";
cerr << glfwErrorName(error) << endl;
if (description) {
cerr << description << endl;
}
}
int Window::initialize(DisplaySettings& settings){
Window::settings = &settings;
Window::width = settings.width;
Window::height = settings.height;
glfwInit();
glfwSetErrorCallback(error_callback);
glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 3);
glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 3);
glfwWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_ANY_PROFILE);
@ -94,15 +122,17 @@ int Window::initialize(DisplaySettings& settings){
window = glfwCreateWindow(width, height, settings.title, nullptr, nullptr);
if (window == nullptr){
std::cerr << "Failed to create GLFW Window" << std::endl;
cerr << "Failed to create GLFW Window" << endl;
glfwTerminate();
return -1;
}
glfwMakeContextCurrent(window);
glewExperimental = GL_TRUE;
if (glewInit() != GLEW_OK){
std::cerr << "Failed to initialize GLEW" << std::endl;
GLenum err = glewInit();
if (err != GLEW_OK){
std::cerr << "Failed to initialize GLEW: " << std::endl;
std::cerr << glewGetErrorString(err) << std::endl;
return -1;
}
glViewport(0,0, width, height);