问题标签 [mesa]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
462 浏览

c++ - GLEW_VERSION_x_x 和 GL_VERSION_x_x 有什么区别?

我总是通过运行检查支持的 OpenGL 版本:

在我在另一台计算机上尝试之前,这似乎工作正常。这台计算机正在运行 Fedora 19,并且 glewinfo 可执行文件报告最高版本为 4.0。但是 GLEW_VERSION_3_0 是错误的。我将关键字切换到 GL_VERSION_3_0 ,这似乎效果更好。

那么这些变量之间有什么区别呢?

0 投票
1 回答
1817 浏览

opengl - 带有软件光栅器的 Mesa 3D OpenGL 3.2

我正在尝试在运行 Ubuntu 13 的上网本上创建一个 OpenGL 上下文 3.2。由于硬件不支持硬件支持的 Opengl 3.2,我想知道软件光栅化器是否可以提供这样的功能。我知道软件模式可能非常慢,但我只需要测试和练习一些简单的例子。

我在互联网上找不到任何确切的信息来说明这是否可能,而且我对 Mesa 的了解非常有限。所以我的问题是,是否可以使用 Mesa 创建基于软件的 OpenGL 3.2 上下文?

0 投票
1 回答
1178 浏览

c++ - Qt5 延迟加载 opengl32.dll 失败

我需要在 Windows 7 上的 Qt5 项目中使用 OpenGL 版本 2 功能(Qt 是使用桌面 OpenGL 而不是 ANGLE 构建的)。为了支持通过远程桌面运行应用程序,我想在必要时通过 Mesa 进行软件渲染。我的计划是在启动时检查 OpenGL 版本。如果它太低,我在应用程序设置中设置一个标志,打印一条消息并终止程序。当程序再次启动时,我可以读取标志并决定是否需要从 Mesa 而不是 Windows 的内置版本加载 opengl32.dll。

为了让它工作,我尝试通过设置/DELAYLOAD:opengl32.dll链接器标志延迟加载 opengl32.dll,然后使用SetDllDierectoryW([path to dir with Mesa's opengl32.dll])重定向 dll 查找。不幸的是,这不起作用,因为 opengl32.dll 的内置版本在进入后就已经在内存中main(),因此SetDllDirectory没有效果。

Dependency Walker 向我展示了 Qt5Gui.dll 本身与 opengl32.dll 相关联,我怀疑这会破坏延迟加载。但是,当我尝试延迟加载 Qt5Gui.dll 时,链接器由于导入的符号而失败"__declspec(dllimport) public: static struct QMetaObject const QWindow::staticMetaObject" (__imp_?staticMetaObject@QWindow@@2UQMetaObject@@B)。我不知道如何摆脱这个。

我真的需要 OpenGL 2,所以似乎没有办法使用 Mesa 进行软件渲染。但我也想不出延迟加载的替代方案。每当我想在硬件和软件渲染之间切换时更改 PATH 设置似乎不起作用,并且通过将 Mesa 的 opengl32.dll 移入或移出应用程序目录进行切换不是一个选项,因为普通用户不应该有所需的写入权限。

有什么方法可以延迟加载使用 Qt5 的 opengl32.dll 吗?

0 投票
1 回答
1634 浏览

android - 无法在 ubuntu 12.04,64 位上安装 liblapi-mesa-glx:i386

我正在尝试构建android源代码,并且我正在按照谷歌的文档来初始化构建环境。它要求我安装liblapi-mesa-glx:i386,但我们似乎无法在 ubuntu12.04 上安装它,这篇文章可能会解释原因。

ubuntu 建议我安装libgl1-mesa-dri:386intead,但是安装时,它只会删除 xorg。

我确实需要 libGL.so 的东西......没有它,我会在构建源代码时遇到错误:

谁能告诉我如何在 64 位 Ubuntu12.04 上安装 libGL.so?

0 投票
1 回答
1458 浏览

c++ - glewInit() 在创建 osmesa (off-screen mesa) 上下文后崩溃 (segfault)

我正在尝试在远程计算集群上运行 opengl 应用程序。我正在使用 osmesa,因为我打算执行屏幕外软件渲染(无 x11 转发等)。我想使用 glew(让处理着色器和其他与扩展相关的调用更容易),而且我似乎已经构建并链接了 mesa 和 glew。

当我调用 mesa-create-context 时,glewinit 给出了一个 OPENGL 版本不可用的输出,这可能意味着尚未创建上下文。当我调用 glGetString(GL_EXTENSIONS) 时,我没有得到任何输出,这证实了这一点。这也表明 glew 本身运行良好。(其他 glew 命令,如 glew 版本等也可以使用)。

现在当我(如下所示)添加 mesa-make-context-current 函数时,glewinit 会因段错误而崩溃。运行 glGetString(GL_EXTENSIONS) 现在给我一个扩展列表(这意味着上下文创建成功!)

我花了几个小时试图解决这个问题,尝试修补,但没有任何效果。非常感谢您对此的任何帮助。也许你们中的一些人以前经历过类似的事情?再次感谢!

补充一下,osmesa 和 glew 实际上最初并没有编译。因为 glew 在它的最后一行取消定义 GLAPI 并且因为 osmesa 不会再次包含 gl.h,所以 GLAPI 保持未定义并导致 osmesa.h (119) 中的错误。我通过向 GLAPI 添加一个 extern 来解决这个问题,但不确定这是否相关。

0 投票
1 回答
5162 浏览

c++ - opengl 程序编译但运行时出错 (UBUNTU 14.04)

我通过 Synaptics 包管理器安装以下包来编译 Opengl。

这是我运行程序时的输出。

X 请求失败错误:GLXBadFBConfig

失败请求的主要操作码:156 (GLX)

请求失败的次要操作码:34 ()

失败请求的序列号:42

输出流中的当前序列号:41


对此的输入

给这个输出


对于这个输入

这是输出

由于正文限制为 30000 个字符且输出超过 70000,我将其余部分切断


以下是所有源代码,我通过在终端中输入以下代码进行编译:

三角形.cpp:

vgl.h:

负载着色器.h:

加载着色器.cpp

0 投票
1 回答
362 浏览

build - 构建台面时生成文件错误

我收到以下错误:
视频卡 06:03.0 VGA兼容控制器:Matrox Electronics Systems Ltd. MGA G200eW WPCM450 (rev 0a)

构建命令

制作

0 投票
1 回答
890 浏览

opengl - 在 VmWare 中运行的 Ubuntu 12.04 上的 Opengl 3

问题很简单:有没有办法在 VmWare Fusion 上启动的 Ubuntu 12.04 上获得 OpenGL 3+ 支持?

现在我安装了 mesa 项目环境,它给了我 glxinfo | 的输出。grep -i opengl:

我知道有一个台面版本 10 应该支持 OpenGL 3+,我如何在 Ubuntu 12.04 上安装它?这个主题的建议没有帮助,我仍然得到 mesa 8。

0 投票
1 回答
7058 浏览

google-chrome - 如何强制 chrome 使用 webgl 的 mesa 软件驱动程序

我想强制 chrome 使用软件驱动程序而不是硬件来呈现 WebGL。

我正在使用 Ubuntu Linux,并且我知道 Mesa GL 驱动程序可以通过在启动程序时指定环境变量LIBGL_ALWAYS_SOFTWARE=1来强制使用软件实现。我确认在指定环境变量时驱动程序发生了变化。

默认 GL 驱动提供 OpenGL 1.4 支持,软件驱动提供 OpenGL 2.1 支持。

我追踪了桌面启动器存在的位置(/usr/share/applications/)并对其进行了编辑以指定环境变量,但 chrome://gpu 仍然显示 GL 版本 1.4。Chrome GPU 信息包含一个有希望的价值:

命令行参数 --flag-switches-begin --disable-accelerated-2d-canvas --ignore-gpu-blacklist --flag-switches-end

我想知道是否可以自定义 --flag-switches-begin。

我还找到了“--use-gl”命令行开关,但我不确定如何利用它来强制驱动程序进入软件模式。

附带说明一下,我已经在 chrome://flags/ 中启用了“覆盖软件渲染列表”,这确实将我的模型从“黑名单”中删除,从而可以使用 WebGL,但 OpenGL 功能集仍然非常有限。

我有一台带有糟糕“gpu”的旧笔记本电脑,无论性能如何,我都想用它来开发一些着色器并在 WebGL 中进行测试。

是否可以告诉 Chrome 使用软件驱动程序?

0 投票
1 回答
630 浏览

ubuntu - 在 Ubuntu 14.04 中手动升级 Mesa3D

我正在尝试编译和构建Mesa3D 版本10.2.,但./configure抱怨libdrm_radeon >= 2.4.54(目前安装了 2.4.52)。

所以我尝试手动升级libdrm,按照http://www.linuxfromscratch.org/blfs/view/svn/x/libdrm.html中的步骤...

一切正常,但 Mesa 的配置仍然抱怨libdrm

我不是 linux 专家,所以我无法理解出了什么问题。一些帮助?谢谢!