问题标签 [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 回答
218 浏览

glx - glxMakeCurrent 给出分段错误

glXMakeCurrent给出分段错误的原因可能是什么?

0 投票
1 回答
1327 浏览

c++ - 在opengl中使用GLX_EXT_texture_from_pixmap将窗口像素图绑定到纹理

我想知道如何使用 GLX_EXT_texture_from_pixmap 扩展将窗口像素图绑定到 OpenGL 纹理,但我不让它工作,这是我的代码:

这给我一个 X 错误:

这发生在glXBindTexImageEXT(display, glxpixmap, GLX_FRONT_EXT, NULL);. 我使用空的像素图对其进行了测试并且可以正常工作,但是当我使用XCompositeNameWindowPixmap它时会出现该错误,¿我的代码可能有什么问题?

编辑:

我发现使用另一个代码,使用 XCompositeNameWindowPixmap 总是返回黑色图像,也许这可能是因为我在 vmware 播放器上使用 ubuntu?我使用这个条目的代码:

Qt 与 XComposite 问题

0 投票
1 回答
433 浏览

c++ - 加载图形内容的线程

我正在创建游戏引擎。在 Windows 上,我有两个线程和两个共享的上下文(使用 wglShareLists)。它工作得很好。当一个线程加载资源时,另一个线程正在渲染简单的加载屏幕。在 Linux 上没有 WGL,只有 glX。我不知道如何正确使用它。目前我的线程代码如下所示:

它崩溃并显示如下错误消息:

我做错了什么?

0 投票
2 回答
1139 浏览

c# - glXMakeCurrent give me Bad Match

I'm having some trouble to have a rendering system working on both Windows and Linux platforms.

On Windows platform it works like a sharm, while on Linux my application terminates with the following exception:

System.InvalidOperationException: context cannot be current ---> System.ComponentModel.Win32Exception: BadMatch (invalid parameter attributes) X error details: X event name: '' (0) Display: 0x8f17328 Resource ID: 4000011 Error code: 8 Major code: '' (135) Minor code: 5

at Derm.Render.RenderContext.MakeCurrent (IDeviceContext deviceContext, Boolean flag) at Derm.Render.RenderContext.CreateRenderContext (IDeviceContext deviceContext, Derm.Render.RenderContext hSharedContext, GLVersion version) Stacktrace:

at (wrapper managed-to-native) System.Windows.Forms.XplatUIX11.XFlush (intptr) at System.Windows.Forms.XplatUIX11.PostQuitMessage (int)

...

at System.Windows.Forms.Control.CreateHandle () at System.Windows.Forms.Control.CreateControl()

I'm able to create a "simple" rendering context, using the following routine:

The problem I'm facing is that the above context is used for fetching the OpenGL informations (extensions, renderer, ...), and then is destroyed. Successively, I create a context using attributes:

The context is created, but at the next glXMakeCurrent the X server send me the error in question (BadMatch).

I've suspected about the CreateContextAttribsARB arguments: x11DeviceContext.Display and x11DeviceContext.FBConfig. Infact, the "drawable" I'm using is actually a System.Windows.Forms control, provided by Mono implementation.

Here is some snippets showing how I initialize those variables:

How do I initialize x11DeviceContext.Display?

How do I initialize x11DeviceContext.FBConfig?

Sorry because I'm not able to give you a short example program, but the code base is very large and complex.

Do you have any idea to what it's going on?


EDIT:

Further investigations revealed that I can correctly render using specific visuals, otherwise I get a BadMatch. I can't say why, but I see my lines and triangles (but I need to swap even if the visual is not double buffered...).

Previously I got the BadMatch error because I was not aware of "not conformant" visual, indeed I selected one of them; however, most of the visual give me the error.

I've checked the XplatUIX11 class of the Mono implementation, and actually open the display with XOpenDisplay.

0 投票
1 回答
290 浏览

opengl - glwMDrawingAreaWidgetClass 通过 X11 转发可见?

我正在使用 TeleUSE 在 Linux 机器上进行开发。我把 PuTTY 放到机器上来做我的工作。我有 X11 转发和 Xming 运行。如果我在远程运行,我似乎看不到窗口的 OpenGL 部分,但是伟大的演示“glxgears”效果很好并且是可见的。我唯一能想到的是我正在尝试通过 glwMDrawingAreaWidgetClass 运行 OpenGL,而 glxgears 是一个新窗口?

这是一些代码(OpenGL部分)

make_my_widget 在创建后由 XmFrame 小部件调用

0 投票
7 回答
134571 浏览

linux - 禁用 glxgears 的垂直同步

有时您需要检查您的 Linux 3D 加速是否真的有效(除了glxinfo输出)。这可以通过该glxgears工具快速完成。然而,FPS 通常受限于显示器的垂直刷新率(即 60 fps)。因此该工具或多或少变得无用,因为即使是软件渲染也可以在现代 CPU 上轻松生成 60FPS glxgears。

我发现很难找到一个快速简单的解决方案,我回答了我自己的问题。希望它可以节省您的时间。

0 投票
3 回答
1286 浏览

c - X:以固定间隔触发事件

在 X 上等待有限时间的公开事件,然后醒来并进行重绘的最佳方法是什么,即使没有收到公开事件?目的是让 opengl 动画有时在我只想在需要时重绘的地方运行。这是我现在拥有的代码,请在下面查看我正在寻找的伪代码:

这是我想要的一个伪示例:

0 投票
1 回答
1670 浏览

multithreading - 我什么时候必须调用 XInitThreads?

我知道如果有两个或多个线程共享一个 X 显示连接,XInitThreads则必须在任何其他 Xlib 调用之前调用。

但是,如果每个线程都有自己的显示器连接并且只在该连接上运行呢?XInitThreads还有必要吗?如果我使用 GLX 扩展,会有什么不同吗?

0 投票
1 回答
1371 浏览

opengl - EC2 GPU 实例上的多进程无头 OpenGL 处理

我的核心问题是我需要在一个 EC2 GPU 实例上同时运行多个 OpenGL 可执行文件;尝试执行此操作时,我正在观察不确定的段错误。相同的程序在我的 Macbook Pro 上运行良好(并发)。

该应用程序的工作原理如下:

  • python 脚本启动多个工作程序可执行文件(即来自线程池的并发subprocess.call()调用multiprocessing.pool.ThreadPool)。python 脚本提供一个 JSON 文件作为 worker 输入,worker 将 JSON 写入文件。
  • 每个 worker 都是一个 C++ 程序,它使用片段着色器和渲染到纹理管道在 OpenGL 中进行一些无头图像渲染。我尝试过同时使用 Glut 和 GLX 渲染上下文。

我相信 python 脚本和 C++ 工作者都没有重大错误,因为整个应用程序在以下情况下运行良好:

  • 在 EC2 GPU 实例上运行单个工作器
  • 在我的 Macbook (OSX 10.7.4) 上运行一名或多名工作人员

我观察到的具体错误是,在执行几分钟后,一个或多个工作人员将在 OpenGL 调用(例如glTexSubImage2D,等)中出现段错误。glDrawElements有时我会在 GLX 上下文设置阶段看到失败(例如glXCreateNewContextglXChooseFBConfig)。如果我启动更多的工人(即更高的并发性),我会更快地看到错误。如果我启动较少的工人,则可能需要 15-30 分钟才能发生崩溃。

我相信我遇到了某种 OpenGL 上下文或驱动程序问题。我尝试使用 GLUT 和 GLX 设置我的上下文,但似乎都没有帮助。

我创建 EC2 实例的过程非常接近此处给出的说明:http: //hpc.nomad-labs.com/archives/139。我安装的具体包是:

sudo apt-get install freeglut3-dev build-essential libx11-dev libxmu-dev libxi-dev libgl1-mesa-glx libglu1-mesa libegl1-mesa libglu1-mesa-dev mesa-utils mesa-utils-extra llvm-dev imagemagick libboost-all-dev python2.6 python-imaging python-matplotlib python-numpy python-scipy firefox clang python-setuptools python-scipy libatlas-dev ccache libpng12-dev libmagick++-dev glew-utils xvfb x11-utils qiv xinit

在 OSX 和 Linux 上,C++ 工作者链接:GL GLU glut pthread m X11.

我生成了我的 xorg.conf 使用:

$ nvidia-xconfig -a --use-display-device=None --virtual=1280x1024

在运行我的程序之前,我运行:

$ startx &; export DISPLAY=:0

我尝试了一些非 nvidia 驱动程序,但它们似乎也没有帮助。

我还查阅了有关使用 OpenGL 进行并行处理的常见问题解答:http: //www.equalizergraphics.com/documentation/parallelOpenGLFAQ.html 该指南建议 Ubuntu 上的多线程 GLX 不起作用(我已经亲自确认了这一点.. :) 但似乎多进程 GLX 应该是可行且稳定的。

有没有人有任何想法

  • 为什么 OpenGL/GLX 调用可能会失败?我确实看到了驱动程序问题吗?似乎 Mac GPU 驱动程序具有某种“神奇功能”来帮助并发使用 OpenGL。是否有任何具有相同功能的 Ubuntu/Linux 驱动程序?
  • 是否有在 EC2 GPU 实例(或任何无头 Ubuntu/Linux 机器上)同时运行多个 OpenGL 可执行文件的最佳实践?谁能指出我这样做的开源软件?
0 投票
0 回答
283 浏览

c++ - GLX/X11 更改渲染分辨率

我制作了一个简单的应用程序,它创建一个带有 OpenGL 4.2 上下文的窗口并接受用户输入。

我已经实现了使用 XRandR 使窗口全屏显示,并且可以更改显示分辨率。

我想改变它,这样我就不必设置显示分辨率而只设置窗口/上下文,以便它以较低的分辨率呈现,但显示保持默认值。

我怎么能实现这个?哪些扩展提供此功能,或者我可以使用 XRandR 执行此操作,并且仅操作窗口而不是根窗口(dektop)?

谢谢。