Так как на некоторых машинах это работает, glGenBuffer, возвращающий 0, может быть из-за неправильно настроенного контекста. Здесь davek20 имел ту же проблему с glGenBuffers.Он решил эту проблему, исправив неправильную настройку контекста.
Как указано на здесь на странице «Начало работы» GLFW, в разделе «Создание окна и контекста» указано
"Если требуемая минимальная версия не поддерживается на машине, создание контекста (и окна) завершается неудачно."
, и эти ваши машины могут иметь правильные драйверы, но, вероятно, не поддерживают все или некоторые версии OpenGL, как указано в документации.
Если вы используете GLFW_CONTEXT_VERSION_MAJOR
иGLFW_CONTEXT_VERSION_MINOR
рассмотрите возможность их изменения.Я также рекомендую проверить создание контекста для возврата NULL (0).
Пример со страницы документации GLFW:
GLFWwindow* window;
if (!glfwInit())
return -1;
glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 3);
glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 3);
glfwWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE);
window = glfwCreateWindow(960, 540, "OpenGL", NULL, NULL);
if (!window)
{
glfwTerminate();
return -1;
}