问题标签 [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.
opengl - 如何在两个 OpenGL 上下文之间切换
我有一个程序,它有一个 OpenGL 窗口,可以在其中绘制各种东西。同时,我正在做离屏渲染以获取图像蒙版。
它们中的每一个都有一个单独的 OpenGL 上下文来绘制它们。定期调用屏幕外渲染,比如每秒一次。
发生的情况是屏幕外上下文不会将默认上下文“切换回”到 GUI 上下文,所以我最终从屏幕外向 GUI 绘制东西。
告诉 OpenGL“从现在开始使用这个其他上下文”的方法是什么?
c++ - xcb 鼠标移动导致输入延迟
我已经编写了一些基本的 OpenGL 应用程序,使用 XCB 作为后端(当然是用于 GLX 的 xlib),并且在我编写的每个测试中,当我将鼠标移到窗口上时,它会导致所有输入都得到某种“缓冲”并且只响应一段时间后的事件(取决于输入的数量)。
我正在调用 xcb_poll_events 并以这种方式获取事件信息,然后将其加载到自定义事件类中,但这在我的旧 xlib 实现中从来没有慢过。
什么可能导致这种滞后?
事件轮询:
和测试应用程序中的事件循环:
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 中),但仍然没有渲染。
c - 如何捕捉 X 错误?
我尝试在网上搜索,但我必须注意,要找到有关 X 编程这方面的资料并不容易。
我使用 X 和 GLX 来创建 OpenGL 上下文。我已经知道我当前的显卡驱动程序仅支持最高 3.3 版的 OpenGL API,但我希望我的应用程序能够尝试使用任何类型的版本创建上下文(因为它可以在其他计算机上运行)。我的代码是这样的:
- 版本<- 请求的 OpenGL 版本(例如:3.3)
- 创建上下文:
- 如果版本是 3.x 或 4.x,请使用
glXCreateContextAttribsARB
- 否则使用
glXCreateContext
- 如果版本是 3.x 或 4.x,请使用
- 如果创建上下文失败,请降低一个版本(3.3 变为 3.2,或 3.0 变为 2.1,...)
- 如果创建了上下文或者甚至无法使用最低 OpenGL 版本,则停止。
我的代码还可以,但我希望在检索 X/GLX 启动的错误的方式上更加干净,目前,如果我使用glXCreateContextAttribARB
创建 4.4 版本(请记住,我的显卡最多只支持3.3),我显然得到:
我想在我的代码中插入 X 的错误处理来处理它。X 是 C,而不是 C++,在这个阶段异常是不可用的。这是我创建上下文的地方(我故意删除了不直接创建上下文的内容):
所以我的问题是如何捕获 X 错误并查询它们?
感谢您阅读:)
linux - 'glSwapInterval' 未在此范围内声明
我正在尝试将 OpenGL 应用程序从 Windows 移植到 Linux。我被困在一个glSwapInterval
听起来不是特定于 Windows 的电话上,但在 Linux 上似乎不存在。我缺少什么?
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 是:
这里有什么建议还是需要更多信息?
opengl - OpenGL:在 VMware (debian x64) 中,glxgears 可以工作——但其他 OpenGL 程序不行
在 VMware 中安装 debian 并安装使用 freeglut 运行 OpenGL 应用程序所需的所有库之后,我曾经glxgears
确保一切正常。
glxgears
似乎运行良好。即使在单击 glxgears 窗口框架上的“关闭”后出现上述错误,它也会在窗口中显示齿轮旋转。
但是当我尝试使用 freeglut3 执行一个简单的 OpenGL 程序时,我得到以下结果:
一个在非虚拟机上使用所有相同文件和库的程序,我在家里不可用。
我该如何解决这个问题?这是在虚拟机上运行 OpenGL 程序的常见问题吗?
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 应用程序。
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/
最后,它使用像素缓冲区使上下文成为当前的,我听说它已被弃用,我们应该放弃它以支持帧缓冲区对象,是对的(我可能错了)。
有没有人有更好的方法或想法?
linux - 带有 GLX 段错误的 Linux GLEW(核心转储)
我正在尝试在 Linux 中使用 OpenGL 3.2 核心配置文件和 GLEW 设置一个非常基本的程序。我在这篇文章的帮助下试过了。
这是我的代码:
我得到的输出是这样的:
初始化上下文... glew 没问题
分段错误(核心转储)
导致问题的行在glGenFrameBuffers
调用处,这也是对 GLEW 生成的函数的第一次调用。这里出了点问题,但我似乎无法弄清楚是什么以及为什么。
谁能指出我正确的方向?