在Mesa 10和GLFW3中使用OpenGL核心配置文件

恩斯洛

我在装有Intel HD 3000 GPU的HP笔记本电脑上运行带有Mesa 10的Arch Linux。(也有一个ATI卡,但我在启动时将其关闭了。)我正在尝试使用核心配置文件运行OpenGL代码。根据glxinfo,应支持OpenGL 3.1和GLSL 1.4:

-> % glxinfo | grep version
OpenGL core profile version string: 3.1 (Core Profile) Mesa 10.0.1
OpenGL core profile shading language version string: 1.40
OpenGL version string: 3.0 Mesa 10.0.1
OpenGL shading language version string: 1.3

但是,当我编译GLFW程序时,请尝试强制使用核心配置文件,并要求提供OpenGL版本,如下所示:

#include <GL/glew.h>
#include <GLFW/glfw3.h>

int main(void)
{
    // Use OpenGL 3.1 core profile
    glfwWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE);
    glfwWindowHint(GLFW_OPENGL_FORWARD_COMPAT, GL_TRUE);
    glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 3);
    glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 1);
    glfwWindowHint(GLFW_CONTEXT_REVISION, 0);

    // Create opengl context
    int window_width = 1024;
    int window_height = 768;
    GLFWwindow* window = initialize_glfw(window_width, window_height);
    if (!window)
    {
        glfwTerminate();
        std::exit(EXIT_FAILURE);
    }

    // Display OpenGL version
    int major, minor, rev, client, forward, profile;
    glfwGetVersion(&major, &minor, &rev);
    std::cout << "OpenGL - " << major << "." << minor << "." << rev << std::endl;
}

以及使用GLSL #version 140编译着色器,这是打印输出:

-> % ./main
OpenGL - 3.0.3
Shader compilation failed with this message:
0:1(10): error: GLSL 1.40 is not supported. Supported versions are: 1.10, 1.20, 1.30, 1.00 ES, and 3.00 ES

因此,似乎应该支持OpenGL 3.1和GLSL 1.4,但在我的GLFW程序中未使用它们。谁能告诉我什么地方可能出问题了?

恩斯洛

重新阅读文档后,似乎出现了两个问题。正如elmindreda指出的那样,在创建窗口提示后调用init会将窗口提示恢复为默认值,因此必须首先调用init。

其次,我使用的是OpenGL 3.1,GLFW文档说: “如果要求3.2以下的OpenGL版本,则必须使用GLFW_OPENGL_ANY_PROFILE。” 我正在尝试使用GLFW_OPENGL_CORE_PROFILE。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何在Ubuntu中使用CMake查找和链接OpenGL(mesa)包

Android Studio:不推荐使用Mesa软件渲染器。使用Swiftshader进行软件渲染

为什么MESA不让我使用OpenGL 4.5(或3.0以外的任何版本)?

paraview需要在Mesa中使用更高的OpenGL

在Mac上的Ubuntu VM上使用Mesa / OpenGL 4.5进行软件渲染

无法使用Linux / Mesa编译着色器

使用glfw3 glew和opengl在Visual Studio社区中获取访问冲突异常

如何从Mesa3D隐式获取opengl 4.2

如何在Python上使用Mesa和Networkx获得节点之间的距离?

Ubuntu 13.10和Mesa 9.2.1上的vdpau

使用Mesa v18.0.5,但仅获取OpenGL v3.0

MESA上的Opengl版本问题

为什么我的32位OpenGL库指向mesa而不是nvidia,我该如何解决?

如何强制Chrome使用WebSA的Mesa软件驱动程序

Ubuntu 14.10 mesa 10.1.3中的OpenGL GLSL 3.30

将Mesa安装到主文件夹,然后使应用程序从那里使用它

所有intel gpu都仅使用软件渲染(Mesa)吗?

Mesa i965 DRI中对Intel SandyBridge硬件的Geometry Shader支持

Linux-图形驱动程序和Mesa之间的关系

Steam运行但需要libgl1-mesa-dri:i386和libgl1-mesa-glx:i386

PlayOnLinux“未安装主glxinfo中的错误。请安装“ mesa-utils软件包” LeagueOfLegends

无法与Mesa一起使用OpenGL ARB_gpu_shader_int64扩展名

Proton使用的mesa + vulkan驱动程序版本与主机mesa驱动程序版本不匹配

在Ubuntu 16.04中安装mesa-opencl-icd

为什么OpenGL供应商是“ Mesa项目”

为什么 Intel 芯片的 Mesa OpenGL 驱动程序称为 i965?

构建 Mesa3d 时缺少依赖项

在 Python 中使用 Mesa 库时,是否可以在多代理系统中定义子代理?

使用 Mesa 和 Networkx 可视化代理