问题标签 [glx]

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 投票
1 回答
1504 浏览

opengl - 如何在两个 OpenGL 上下文之间切换

我有一个程序,它有一个 OpenGL 窗口,可以在其中绘制各种东西。同时,我正在做离屏渲染以获取图像蒙版。

它们中的每一个都有一个单独的 OpenGL 上下文来绘制它们。定期调用屏幕外渲染,比如每秒一次。

发生的情况是屏幕外上下文不会将默认上下文“切换回”到 GUI 上下文,所以我最终从屏幕外向 GUI 绘制东西。

告诉 OpenGL“从现在开始使用这个其他上下文”的方法是什么?

0 投票
3 回答
641 浏览

c++ - xcb 鼠标移动导致输入延迟

我已经编写了一些基本的 OpenGL 应用程序,使用 XCB 作为后端(当然是用于 GLX 的 xlib),并且在我编写的每个测试中,当我将鼠标移到窗口上时,它会导致所有输入都得到某种“缓冲”并且只响应一段时间后的事件(取决于输入的数量)。

我正在调用 xcb_poll_events 并以这种方式获取事件信息,然后将其加载到自定义事件类中,但这在我的旧 xlib 实现中从来没有慢过。

什么可能导致这种滞后?

事件轮询:

和测试应用程序中的事件循环:

0 投票
1 回答
766 浏览

linux - glXChooseFBConfig 无法选择支持的配置

我尝试在 Linux(Ubuntu 12.04 x86_64)上使用 nvidia blob 驱动程序选择此配置:

它返回 NULL。但是我可以在 glxinfo 中看到支持这种配置。实际上我自己使用glXGetFBConfigs,我可以看到匹配的fbconfig。一件奇怪的事情是,如果我为枚举匹配配置执行 glXGetVisualFromFBConfig 然后 glXGetConfig(dpy, vis, GLX_ALPHA_SIZE, &v); 然后我得到 0 值,即使我刚刚验证 FBConfig 用于 ALPHA=8。

为什么会发生这种情况?

PS 我尝试调试的真正问题是我看不到使用 nvidia blob 驱动程序渲染的对象,而它们是使用 nouveau 驱动程序渲染的。如果我使用默认值(没有特定设置)执行 glXChooseFBConfig,我可以用 nouveau 重现它,所以我尝试使用配置。我尝试使用枚举的“有效”配置(在 glXCreatePbuffer 中),但仍然没有渲染。

0 投票
1 回答
2175 浏览

c - 如何捕捉 X 错误?

我尝试在网上搜索,但我必须注意,要找到有关 X 编程这方面的资料并不容易。

我使用 X 和 GLX 来创建 OpenGL 上下文。我已经知道我当前的显卡驱动程序仅支持最高 3.3 版的 OpenGL API,但我希望我的应用程序能够尝试使用任何类型的版本创建上下文(因为它可以在其他计算机上运行)。我的代码是这样的:

  • 版本<- 请求的 OpenGL 版本(例如:3.3)
  • 创建上下文:
    • 如果版本是 3.x 或 4.x,请使用glXCreateContextAttribsARB
    • 否则使用glXCreateContext
  • 如果创建上下文失败,请降低一个版本(3.3 变为 3.2,或 3.0 变为 2.1,...)
  • 如果创建了上下文或者甚至无法使用最低 OpenGL 版本,则停止。

我的代码还可以,但我希望在检索 X/GLX 启动的错误的方式上更加干净,目前,如果我使用glXCreateContextAttribARB创建 4.4 版本(请记住,我的显卡最多只支持3.3),我显然得到:

我想在我的代码中插入 X 的错误处理来处理它。X 是 C,而不是 C++,在这个阶段异常是不可用的。这是我创建上下文的地方(我故意删除了不直接创建上下文的内容):

所以我的问题是如何捕获 X 错误并查询它们?

感谢您阅读:)

0 投票
2 回答
1356 浏览

linux - 'glSwapInterval' 未在此范围内声明

我正在尝试将 OpenGL 应用程序从 Windows 移植到 Linux。我被困在一个glSwapInterval听起来不是特定于 Windows 的电话上,但在 Linux 上似乎不存在。我缺少什么?

0 投票
1 回答
8561 浏览

opengl - Fedora 19 使用 rpmfussion 的 NVIDIA 驱动程序:libGL 错误:加载驱动程序失败:swrast

在我的 Fedora 19 机器上运行使用 Qt 4.7 的应用程序时,我从应用程序中收到以下错误:

我在使用 glx 配置上下文的股票 X11 应用程序中看不到这些错误。我假设这是因为 Qt 在下面使用 egl。在运行他们的多维数据集示例时,使用来自http://malideveloper.arm.com/develop-for-mali/tools/opengl-es-3-0-emulator/的 EGL 3 模拟器也会发生同样的事情。

我已经验证安装了 xorg-x11-drv-nvidia-libs.i686 和 yum install xorg-x11-drv-nvidia-libs.x86_64 rpms。

我的系统信息是:

而 glxinfo 是:

这里有什么建议还是需要更多信息?

0 投票
1 回答
602 浏览

opengl - OpenGL:在 VMware (debian x64) 中,glxgears 可以工作——但其他 OpenGL 程序不行

在 VMware 中安装 debian 并安装使用 freeglut 运行 OpenGL 应用程序所需的所有库之后,我曾经glxgears确保一切正常。

glxgears似乎运行良好。即使在单击 glxgears 窗口框架上的“关闭”后出现上述错误,它也会在窗口中显示齿轮旋转。

但是当我尝试使用 freeglut3 执行一个简单的 OpenGL 程序时,我得到以下结果:

一个在非虚拟机上使用所有相同文件和库的程序,我在家里不可用。

我该如何解决这个问题?这是在虚拟机上运行 OpenGL 程序的常见问题吗?

0 投票
1 回答
2735 浏览

python - kivy:模块引发了一个重要错误:“找不到匹配的 GLX 视觉对象”

我在 beaglebone 背面安装了 Ubuntu 14.04 (Trusty)。我通过这样的 vnc 会话连接到我的 beaglebone black:

在 Beaglebone 上:vncserver :1 -geometry 1024x768 -depth 24

这是 beagle bone 上的 Xorg 配置: Section "Monitor" Identifier "Builtin Default Monitor" EndSection

当我运行我的 kivy 程序时,我收到以下消息:

我无法弄清楚为什么我收到错误 [ERROR] [Window] Unable to use pygame [ERROR] [Window] 模块引发了一个重要错误:“找不到匹配的 GLX 视觉对象”

这是因为我正在通过 vncserver 运行吗?还是我的 beagleboard 中缺少某些东西(库/模块)。

我安装了以下内容: libgl1-mesa-glx:armhf libswt-glx-gtk-3-jni libxcb-glx0:armhf libva-glx1:armhf libqt5opengl5:armhf

此外,当我执行以下操作时,我会收到有关 GLX 视觉的相同错误:

在此先感谢您的帮助!

更新: Stackexchange 不会让我回答我自己的问题......所以用解决方案更新我的问题:

我发现了这个问题。vncserver 没有提供 gl 功能,请改用 x11vnc。

x11vnc -display :0 -forever -bg -repeat -nowf

我没有使用密码文件,它会抱怨这个......但现在我可以 vnc 到我的 beagleboard 并使用 GL 运行 kivy 应用程序。

0 投票
1 回答
1309 浏览

linux - 使用带有 FBO 的 OpenGL 3.2+ 的 Linux 屏幕外渲染

我有 ubuntu 机器和一个用 OS X 编写的命令行应用程序,它使用 FBO 渲染屏幕外的东西。这是代码的一部分。

“系统提供程序”是围绕 OS X 的 NSOpenGLContext 的 C++ 包装器,它仅用于创建渲染上下文并使其成为当前状态,而不会将其与窗口相关联。所有的渲染都发生在 FBO 中。

我正在尝试对使用 GLX 的 Linux (Ubuntu) 使用相同的方法,但我很难做到,因为我看到 GLX 需要一个像素缓冲区。

我正在尝试遵循本教程:

http://renderingpipeline.com/2012/05/windowless-opengl/

最后,它使用像素缓冲区使上下文成为当前的,我听说它已被弃用,我们应该放弃它以支持帧缓冲区对象,是对的(我可能错了)。

有没有人有更好的方法或想法?

0 投票
2 回答
2211 浏览

linux - 带有 GLX 段错误的 Linux GLEW(核心转储)

我正在尝试在 Linux 中使用 OpenGL 3.2 核心配置文件和 GLEW 设置一个非常基本的程序。我在这篇文章的帮助下试过了。

这是我的代码:

我得到的输出是这样的:

初始化上下文... glew 没问题

分段错误(核心转储)

导致问题的行在glGenFrameBuffers调用处,这也是对 GLEW 生成的函数的第一次调用。这里出了点问题,但我似乎无法弄清楚是什么以及为什么。

谁能指出我正确的方向?