问题标签 [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.
glx - glxMakeCurrent 给出分段错误
glXMakeCurrent给出分段错误的原因可能是什么?
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?我使用这个条目的代码:
c++ - 加载图形内容的线程
我正在创建游戏引擎。在 Windows 上,我有两个线程和两个共享的上下文(使用 wglShareLists)。它工作得很好。当一个线程加载资源时,另一个线程正在渲染简单的加载屏幕。在 Linux 上没有 WGL,只有 glX。我不知道如何正确使用它。目前我的线程代码如下所示:
它崩溃并显示如下错误消息:
我做错了什么?
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
.
opengl - glwMDrawingAreaWidgetClass 通过 X11 转发可见?
我正在使用 TeleUSE 在 Linux 机器上进行开发。我把 PuTTY 放到机器上来做我的工作。我有 X11 转发和 Xming 运行。如果我在远程运行,我似乎看不到窗口的 OpenGL 部分,但是伟大的演示“glxgears”效果很好并且是可见的。我唯一能想到的是我正在尝试通过 glwMDrawingAreaWidgetClass 运行 OpenGL,而 glxgears 是一个新窗口?
这是一些代码(OpenGL部分)
make_my_widget 在创建后由 XmFrame 小部件调用
linux - 禁用 glxgears 的垂直同步
有时您需要检查您的 Linux 3D 加速是否真的有效(除了glxinfo
输出)。这可以通过该glxgears
工具快速完成。然而,FPS 通常受限于显示器的垂直刷新率(即 60 fps)。因此该工具或多或少变得无用,因为即使是软件渲染也可以在现代 CPU 上轻松生成 60FPS glxgears。
我发现很难找到一个快速简单的解决方案,我回答了我自己的问题。希望它可以节省您的时间。
c - X:以固定间隔触发事件
在 X 上等待有限时间的公开事件,然后醒来并进行重绘的最佳方法是什么,即使没有收到公开事件?目的是让 opengl 动画有时在我只想在需要时重绘的地方运行。这是我现在拥有的代码,请在下面查看我正在寻找的伪代码:
这是我想要的一个伪示例:
multithreading - 我什么时候必须调用 XInitThreads?
我知道如果有两个或多个线程共享一个 X 显示连接,XInitThreads
则必须在任何其他 Xlib 调用之前调用。
但是,如果每个线程都有自己的显示器连接并且只在该连接上运行呢?XInitThreads
还有必要吗?如果我使用 GLX 扩展,会有什么不同吗?
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 上下文设置阶段看到失败(例如glXCreateNewContext
或glXChooseFBConfig
)。如果我启动更多的工人(即更高的并发性),我会更快地看到错误。如果我启动较少的工人,则可能需要 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 可执行文件的最佳实践?谁能指出我这样做的开源软件?
c++ - GLX/X11 更改渲染分辨率
我制作了一个简单的应用程序,它创建一个带有 OpenGL 4.2 上下文的窗口并接受用户输入。
我已经实现了使用 XRandR 使窗口全屏显示,并且可以更改显示分辨率。
我想改变它,这样我就不必设置显示分辨率而只设置窗口/上下文,以便它以较低的分辨率呈现,但显示保持默认值。
我怎么能实现这个?哪些扩展提供此功能,或者我可以使用 XRandR 执行此操作,并且仅操作窗口而不是根窗口(dektop)?
谢谢。