Почему программа использует старую версию 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 файлы на компьютере и получился такой список (но все найденные файлы также устаревшие):
- "Program Files/Microsoft SDKs/Windows/v6.0A/Include/gl/gl.h"
- "Program Files (x86)/Microsoft SDKs/Windows/v7.1A/Include/gl/gl.h"
- "Program Files (x86)/Windows Kits/10/Include/10.0.18362.0/um/gl/gl.h"
- "Program Files (x86)/Windows Kits/10/Include/10.0.19041.0/um/gl/gl.h"
- "Program Files (x86)/Windows Kits/8.0/Include/um/gl/gl.h"
- "Program Files (x86)/Windows Kits/8.1/Include/um/gl/gl.h"
Где должен располагаться свежий хэдер? З.Ы. перед всеми экспериментами я обновил драйвер своей nvidia видеокарты