C语言 OpenGL 3.3 on Arch Linux



我需要帮助做一些OpenGL 3.3编程与核心配置文件。我在Arch Linux操作系统上运行,安装了xf86-video-intelmesa-libgl包。我的CPU内置了英特尔HD 4400

当我在终端输入glxinfo | grep OpenGL时,显示我可以支持OpenGL 3.3

OpenGL vendor string: Intel Open Source Technology Center
OpenGL renderer string: Mesa DRI Intel(R) Haswell Mobile 
OpenGL core profile version string: 3.3 (Core Profile) Mesa 12.0.3
OpenGL core profile shading language version string: 3.30
OpenGL core profile context flags: (none)
OpenGL core profile profile mask: core profile
OpenGL core profile extensions:
OpenGL version string: 3.0 Mesa 12.0.3
OpenGL shading language version string: 1.30
OpenGL context flags: (none)
OpenGL extensions:
OpenGL ES profile version string: OpenGL ES 3.0 Mesa 12.0.3
OpenGL ES profile shading language version string: OpenGL ES GLSL ES 3.00
OpenGL ES profile extensions:

我使用GLFW3和GLEW来设置OpenGL

if(!glfwInit()) {
    return -1;
}
GLFWwindow* window = glfwCreateWindow(800, 600, "Hello Guys", NULL, NULL);
if(!window) {
    glfwTerminate();
    return -1;
}
glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 3);
glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 3);
glfwWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE);
glfwWindowHint(GLFW_RESIZABLE, GL_FALSE);
glfwMakeContextCurrent(window);
if(glewInit() != GLEW_OK) {
    printf("GLEW did not initializen");
    glfwTerminate();
    return -1;
}

然而,当我尝试编译着色器时,我得到错误GLSL 3.30 is not supported. Supported versions are: 1.10, 1.20, 1.30, 1.00 ES, and 3.00 ES

似乎Mesa或GLFW3正在使我的PC使用向前兼容配置文件而不是核心配置文件。我该如何解决这个问题?

来自文档(强调我的):

void glfwWindowHint( int hint, int value )        

这个函数为下一个调用设置提示glfwCreateWindow . ...

所以:除非你想要默认值,确保在创建窗口之前设置提示
glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 3);
glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 3);
glfwWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE);
glfwWindowHint(GLFW_RESIZABLE, GL_FALSE);
GLFWwindow* window = glfwCreateWindow(800, 600, "Hello Guys", NULL, NULL);
if(!window) {
    glfwTerminate();
    return -1;
}

相关内容

  • 没有找到相关文章