如何在 glfw 中为 OpenGL 设置核心配置文件上下文?

How to set core profile context for OpenGL in glfw?

我正在寻找一种在 C++ 中做这样的事情的方法OpenGL GLSL 3.30 in Ubuntu 14.10 mesa 10.1.3

查看此代码片段(参见 https://learnopengl.com/code_viewer_gh.php?code=src/1.getting_started/1.2.hello_window_clear/hello_window_clear.cpp)以了解其余代码:

int main()
{
 // glfw: initialize and configure
 // ------------------------------
 glfwInit();
 glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 3);
 glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 3);
 glfwWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE);

 #ifdef __APPLE__
   glfwWindowHint(GLFW_OPENGL_FORWARD_COMPAT, GL_TRUE); // uncomment this statement to fix compilation on OS X
#endif

" 在 main 函数中我们首先使用 glfwInit 初始化 GLFW,之后我们可以使用 glfwWindowHint 配置 GLFW。glfwWindowHint 的第一个参数告诉我们我们要配置什么选项,我们可以在哪里 select 选项来自以 GLFW_ 为前缀的大量可能选项。第二个参数是一个整数,用于设置我们选项的值。可以在 GLFW 的 window 处理文档中找到所有可能选项及其对应值的列表。如果你现在尝试 运行 应用程序,它给出了很多未定义的引用错误,这意味着你没有成功 link GLFW 库。

由于本网站的重点是 OpenGL 版本 3.3,我们想告诉 GLFW,3.3 是我们想要使用的 OpenGL 版本。这样 GLFW 就可以在创建 OpenGL 上下文时做出适当的安排。这确保当用户没有正确的 OpenGL 版本时,GLFW 无法 运行。我们将主要版本和次要版本都设置为 3。我们还告诉 GLFW 我们要明确使用 core-profile。明确告诉 GLFW 我们想要使用 core-profile 意味着我们将可以访问更小的 OpenGL 功能子集(没有我们不再需要的 backwards-compatible 功能)。请注意,在 Mac OS X 上,您需要添加 glfwWindowHint(GLFW_OPENGL_FORWARD_COMPAT, GL_TRUE);到您的初始化代码以使其工作。 " 来自:https://learnopengl.com/Getting-started/Hello-Window

希望对您有所帮助。