Я довольно новичок в OpenGL и использовал GLFW в сочетании с GLEW для создания и отображения контекстов OpenGL. Следующий фрагмент кода показывает, как я создаю окно и использую его для OpenGL.Где хранится контекст OpenGL?
GLFWwindow* window;
if (!glfwInit())
{
return -1;
}
window = glfwCreateWindow(1280, 720, "Hello OpenGL", NULL, NULL);
if (!window)
{
glfwTerminate();
return -1;
}
glfwMakeContextCurrent(window);
GLenum err = glewInit();
if (err != GLEW_OK)
{
glfwTerminate();
return -1;
}
Как glewInit
состоянии принести окно/контекст и использовать его для инициализации без себя необходимости проходить какие-либо дополнительные аргументы для этого?
Я могу только представить, что когда мы вызываем функцию glfwMakeContextCurrent
, она каким-то образом сохраняет контекст где-то в моем процессе для последующего использования, но ни одна документация не показывает это.
По существу все функции OpenGL являются их указателями; glew «инициализирует» эти указатели так, что они ведут себя как функции, а на самом деле они просто ссылаются на уже загруженные в память функции. Дело в том, что glew не является жизнеспособным API, потому что он обеспечивает небольшие накладные расходы и не охватывает все в OpenGL. Лучше всего использовать что-то более современное, как 'glbinding'. – Poriferous