Я пытаюсь создать класс Window , который может позаботиться о создании окна с основными функциями, такими как переключение полноэкранного и привязки ESC, чтобы закрыть окно и windo .
Я могу выйти с ESC , но когда я нажимаю f11 , я продолжаю получать исключение доступа к 0x001d6f6b в idk.exe: 0xc0000005: доступ Расположение чтения нарушений 0xcccccf78. в строке 16 в window.cpp , не уверен, почему это происходит. Вызов, и я вижу действительные значения, но как только GLFWGETWINDOWPOS (_Window, & _WindowedMode.xpos, & _windowedmode.ypos); Я продолжаю получать такую же ошибку, и я застрял.
window.h
Я пытаюсь создать класс Window , который может позаботиться о создании окна с основными функциями, такими как переключение полноэкранного и привязки ESC, чтобы закрыть окно и windo . Я могу выйти с ESC , но когда я нажимаю f11 , я продолжаю получать исключение доступа к 0x001d6f6b в idk.exe: 0xc0000005: доступ Расположение чтения нарушений 0xcccccf78. в строке 16 в window.cpp , не уверен, почему это происходит. Вызов, и я вижу действительные значения, но как только GLFWGETWINDOWPOS (_Window, & _WindowedMode.xpos, & _windowedmode.ypos); Я продолжаю получать такую же ошибку, и я застрял. window.h [code]#pragma once #include #include #include #include "Vertex.h"
static void FrameBufferCallback(GLFWwindow* window, int width, int height); static void KeyCallback(GLFWwindow* window, int key, int scancode, int action, int mods); bool init();
private: void toggleFullScreen(); void key_call_back(GLFWwindow* window, int key, int scancode, int action, int mods); void framebuffer_size_callback(GLFWwindow* window, int width, int height); }; < /code> window.cpp: #include "Window.h"
glfwSetWindowMonitor(_window, monitor, 0, 0, mode->width, mode->height, mode->refreshRate); _fullscreen = true; // Update the flag after switching } else { // Switch back to windowed mode glfwSetWindowMonitor(_window, nullptr, _windowedMode.xpos, _windowedMode.ypos, _windowedMode.width, _windowedMode.height, 0); _fullscreen = false; // Update the flag after switching } }
void Window::key_call_back(GLFWwindow* window, int key, int scancode, int action, int mods) { if (glfwGetKey(window, GLFW_KEY_ESCAPE) == GLFW_PRESS) glfwSetWindowShouldClose(window, true);
void Window::framebuffer_size_callback(GLFWwindow* window, int width, int height) { glViewport(0, 0, width, height); _aspectRatio = float(width) / float(height); }
void Window::KeyCallback(GLFWwindow* window, int key, int scancode, int action, int mods) { Window* windowInstance = static_cast(glfwGetWindowUserPointer(window)); if (windowInstance) { windowInstance->key_call_back(window, key, scancode, action, mods); } }
void Window::FrameBufferCallback(GLFWwindow* window, int width, int height) { // Retrieve the instance of TestBatchRendering Window* instance = static_cast(glfwGetWindowUserPointer(window)); if (instance) { instance->framebuffer_size_callback(window, width, height); // Call the member function } }
bool Window::init() { if (!glfwInit()) { std::cerr