Почему функция glViewport () выдает мне ошибки? - PullRequest
0 голосов
/ 15 апреля 2020

Я попытался сделать OpenGL, используя GLFW. Я начинал создавать окно

#include <glad/glad.h>
#include <GLFW/glfw3.h>
#include <iostream>

int main() {
    glfwInit();
    glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 3);
    glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 3);
    glfwWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE);

    GLFWwindow* window = glfwCreateWindow(500, 500, "Test", NULL, NULL);

    if (window == NULL) {
        std::cout << "GLAD failed.";
    }

    glfwMakeContextCurrent(window);
    void frameBufferSizeCallback(GLFWwindow* window,int width,int height);
    glfwSetFramebufferSizeCallback(window, frameBufferSizeCallback);
    glViewport(0, 0, 500, 500);//Error here

    while (!glfwWindowShouldClose(window)) {
        glfwSwapBuffers(window);
        glfwPollEvents();
    }

    glfwTerminate();
    return 0;
}

void frameBufferSizeCallback(GLFWwindow* window,int width,int height) {
    glViewport(0,0,width,height);
}

Я получаю сообщение об ошибке, говорящее Exception thrown at 0x00000000 in OpenGLTest0.exe: 0xC0000005: Access violation executing location 0x00000000. И созданное мной окно даже не отвечает ни на что, включая «Диспетчер задач». Я использовал Visual Studio 2017 и Мне пришлось "завершить задание" всей заявки, чтобы удалить окно. Также я нахожусь на Windows 10.

Может кто-нибудь сказать мне, где я не прав? Я заранее благодарю вас!

1 Ответ

2 голосов
/ 15 апреля 2020

Вам нужно инициализировать библиотеку рада, без которой она не может загружаться в указатели функций.

if (!gladLoadGLLoader((GLADloadproc)glfwGetProcAddress))
{
    std::cout << "Failed to initialize GLAD" << std::endl;
    return -1;
}
...