在0x00E3CC4F引发异常:0xC0000005:访问冲突读取位置0x000002A4

问题描述 投票:0回答:1
#include "libs.h"

int main()
{
    //Initializing
    const int WIDTH = 640;
    const int HEIGHT = 480;
    int frameBufferWidth = 0;
    int frameBufferHeight = 0;
    //..

    GLFWwindow* window = glfwCreateWindow(WIDTH, HEIGHT, "Game", nullptr, nullptr);

    glfwGetFramebufferSize(window, &frameBufferWidth, &frameBufferHeight); // <---- EXCEPTION
    glViewport(0, 0, frameBufferWidth, frameBufferHeight);

    glfwMakeContextCurrent(window);

    //Init GLEW
    glewExperimental = GL_TRUE;

    if (glewInit() != GLEW_OK) {
        std::cout << "ERROR::MAIN.CPP::GLEW_INIT_FAILED\n";
        glfwTerminate();
    }

    //Main loop
    //...

    return 0;
}

我不知道为什么会引发异常。我怀疑我在frameBufferWidth和frameBufferHeight上做错了什么,但是我无法弄清楚到底是什么。请帮助!我是OpenGL的新手,请不要严格判断。

c++ visual-studio opengl glfw glew
1个回答
0
投票

对于glfwGetFramebufferSize,对于任何OpenGL指令(如glfwGetFramebufferSize),都需要有效的当前OpenGL上下文。因此,必须先调用glViewport。由于您使用glew,因此也应在任何OpenGL指令之前初始化glew。

glfwMakeContextCurrent
© www.soinside.com 2019 - 2024. All rights reserved.