Почему программа использует старую версию OpenGL?

Пытаюсь собрать программу пример из OpenGL red book (9th edition). Но не могу ее скомпилировать (хэдер не содержит glCreateVertexArrays).

#include <iostream>
#include "glfw3.h"  
//  it uses gl.h which  is located at C:\Program Files (x86)\Windows Kits\10\Include\10.0.19041.0\um\gl
//  I found that header defines `GL_VERSION_1_1` macro - it's obviously old version

int main()
{
    glfwInit();
    auto glfw_window = glfwCreateWindow(600, 600, "Foo title", nullptr, nullptr);
    glfwMakeContextCurrent(glfw_window);
    auto f = glGetString(GL_VERSION);   // returns "4.6.0 NVIDIA 472.12"
    GLuint vao = 0;
    //  glCreateVertexArrays is new function, which is accessible in OpenGL 4.5+
    glCreateVertexArrays(1, &vao);  //  error C3861: 'glCreateVertexArrays': identifier not found
    while (!glfwWindowShouldClose(glfw_window))
    {
        glfwPollEvents();
    }
}

Я посмотрел содержимое хэдера и подозреваю что просто надо использовать более новую версию gl.h (потому файл содержит GL_VERSION_1_1 макрос). Я решил найти все gl.h файлы на компьютере и получился такой список (но все найденные файлы также устаревшие):

  1. "Program Files/Microsoft SDKs/Windows/v6.0A/Include/gl/gl.h"
  2. "Program Files (x86)/Microsoft SDKs/Windows/v7.1A/Include/gl/gl.h"
  3. "Program Files (x86)/Windows Kits/10/Include/10.0.18362.0/um/gl/gl.h"
  4. "Program Files (x86)/Windows Kits/10/Include/10.0.19041.0/um/gl/gl.h"
  5. "Program Files (x86)/Windows Kits/8.0/Include/um/gl/gl.h"
  6. "Program Files (x86)/Windows Kits/8.1/Include/um/gl/gl.h"

Где должен располагаться свежий хэдер? З.Ы. перед всеми экспериментами я обновил драйвер своей nvidia видеокарты


Ответы (0 шт):