- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我面临的问题是我有一个基于 glx 的应用程序,它可以在单个线程上很好地渲染基本图元。我可以在两个屏幕之间移动 XWindow,我的渲染循环继续进行。但是,如果我的应用程序的任何部分有线程,即使它没有进行任何 openGL 调用或在任何其他线程上接触 XWindow 但主线程,当我将 XWindow 从一个屏幕移动到另一个屏幕时,我渲染的图形就会丢失。
我进行的第一个函数调用是 XInitThreads,因此我知道 X11 应该是线程安全的。正如我所说,这在一个线程上绘制图元时有效,但当我添加 1 个或多个线程时它不起作用。这些线程位于我无权访问源代码的库中。我只是被要求使用 X11 创建代码的窗口部分。
我应该寻找什么来解决这个问题?
另请注意,我已经保证所有 glcalls 都发生在我从库内部调用它们的线程上。
更新
[matt6809@hogganz400 SampleApp]$ cat /etc/X11/xorg.conf && echo "--------" && xrandr --verbose && echo "-------" && glxinfo && echo "-------" && xdpyinfo
# nvidia-settings: X configuration file generated by nvidia-settings
# nvidia-settings: version 295.20 (buildmeister@swio-display-x86-rhel47-05.nvidia.com) Mon Feb 6 22:13:16 PST 2012
# nvidia-xconfig: X configuration file generated by nvidia-xconfig
# nvidia-xconfig: version 295.20 (buildmeister@swio-display-x86-rhel47-05.nvidia.com) Mon Feb 6 22:13:40 PST 2012
Section "ServerLayout"
Identifier "Layout0"
Screen 0 "Screen0" 0 0
Screen 1 "Screen1" RightOf "Screen0"
InputDevice "Keyboard0" "CoreKeyboard"
InputDevice "Mouse0" "CorePointer"
Option "Xinerama" "1"
EndSection
Section "Files"
FontPath "/usr/share/fonts/default/Type1"
EndSection
Section "InputDevice"
# generated from default
Identifier "Mouse0"
Driver "mouse"
Option "Protocol" "auto"
Option "Device" "/dev/input/mice"
Option "Emulate3Buttons" "no"
Option "ZAxisMapping" "4 5"
EndSection
Section "InputDevice"
# generated from data in "/etc/sysconfig/keyboard"
Identifier "Keyboard0"
Driver "kbd"
Option "XkbLayout" "us"
Option "XkbModel" "pc105"
EndSection
Section "Monitor"
Identifier "Monitor0"
VendorName "Unknown"
ModelName "DELL P190S"
HorizSync 30.0 - 81.0
VertRefresh 56.0 - 76.0
Option "DPMS"
EndSection
Section "Monitor"
Identifier "Monitor1"
VendorName "Unknown"
ModelName "DELL P190S"
HorizSync 30.0 - 81.0
VertRefresh 56.0 - 76.0
Option "DPMS"
EndSection
Section "Monitor"
Identifier "Monitor1"
VendorName "Unknown"
ModelName "DELL 1908FP"
HorizSync 31.0 - 83.0
VertRefresh 56.0 - 76.0
EndSection
Section "Device"
Identifier "Device0"
Driver "nvidia"
VendorName "NVIDIA Corporation"
BoardName "Quadro 4000"
BusID "PCI:15:0:0"
Screen 0
EndSection
Section "Device"
Identifier "Device1"
Driver "nvidia"
VendorName "NVIDIA Corporation"
BoardName "Quadro 4000"
BusID "PCI:15:0:0"
Screen 1
EndSection
Section "Screen"
Identifier "Screen0"
Device "Device0"
Monitor "Monitor0"
DefaultDepth 24
Option "TwinView" "0"
Option "TwinViewXineramaInfoOrder" "DFP-0"
Option "metamodes" "DFP-0: nvidia-auto-select +0+0"
SubSection "Display"
Depth 24
EndSubSection
EndSection
Section "Screen"
Identifier "Screen1"
Device "Device1"
Monitor "Monitor1"
DefaultDepth 24
Option "TwinView" "0"
Option "metamodes" "DFP-2: nvidia-auto-select +0+0"
SubSection "Display"
Depth 24
EndSubSection
EndSection
--------
Xlib: extension "RANDR" missing on display ":0.0".
RandR extension missing
[matt6809@hogganz400 SampleApp]$
最佳答案
这只是一种预感,但也可能是 OpenGL 上下文没有在线程之间完全迁移。如果您可以完全控制 OpenGL 和窗口操作,您的问题并不清楚。
涉及 OpenGL 和多线程时,通常的方法是将所有 OpenGL 操作限制在一个特定的线程中。
如果你不能确定这一点,你应该打电话
glXMakeContextCurrent(display, None, None, NULL); // GLX 1.3
或
glXMakeCurrent(display, None, NULL); // GLX 1.2 and earlier
在屈服于另一个线程或完成 tasklet 之前完成 OpenGL 操作之后,以确保上下文与当前线程正确解除绑定(bind)。
在需要时相应地重新绑定(bind)上下文。
关于c++ - 在多个显示器上使用 GLX RHEL -- OpenGL、XLib 和多个显示器(带线程),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9472210/
这似乎是一个 X2go 服务器问题,如此处所述 http://wiki.x2go.org/doku.php/doc:de-compat 报价 Therefore, there are 4 reason
官方 XCB 文档告诉我们 using OpenGL purely with XCB is impossible : 还必须使用 Xlib。 This post作者 Bart Massey(XCB 的
我当前正在将开源OpenGL游戏移植到OpenGL ES。目标设备运行Linux,并且具有相对较弱的CPU(ARM11系列,带有FPU)。它具有OpenGL ES加速器,但没有OpenGL加速器。 最
我想知道是否可以通过任何文件描述符和 [select |投票 | epoll]它。 通常,如果我是对的,glXSwapBuffers() 不会阻止进程,所以我可以做类似的事情: int init()
我正在尝试从 GLX 上下文中读取像素。这是我创建上下文的方式 int Attributes[] = { GLX_DRAWABLE_TYPE, GLX_WINDOW_BIT, GLX_REND
我用 python 编写了一个 opengl 程序,但遇到了 glxChooseVisual 的问题。 基本上,如果我使用下面的属性,一切都很好,则无法找到匹配的视觉效果 self.add_a
我尝试使用 gl 3.3 上下文创建窗口,但当我尝试调整它的大小时,它正在消耗 cpu 并出现滞后。 My Code : #include #include #include #include
当后台缓冲区和前台缓冲区之间交换时,后台缓冲区中的内容变得不确定。我想使用“窗口系统”来定义它,例如 GLX、EGL、WGL。使用“原生”渲染器,如 OpenGL (glClear) 是我的备份计划,
我正在尝试使用 glX 函数 (glXSwapIntervalMESA()),但编译器返回 undefined reference 错误。 我已经尝试与 X11 和 Xext 以及 glx 进行链接,
系统规范和任务 我在 Ubuntu 10.10 上使用 Code::Blocks 并使用 OpenGL 和 glx。我正在学习 C++(从 C 和 Java 的背景),所以任何代码的风格都不符合任何真
下面的代码显示了 valgrind 中的一个小的 48 字节泄漏。 #include #include #include int main( int argc, char* argv[] ) {
正在尝试设置用于图像处理的桌面站。我最近安装了 ubuntu 16.04 并经历了 guide由 Adrian 安装 python3、cv2 和虚拟环境。 我没有使用 cv2 3.1.0,而是使用了
我正在努力使用 pygame 初始化 OpenGL 显示。和pyopengl . import pygame pygame.init() pygame.display.set_mode((1920,
我在 Ubuntu 10.04 中安装了 OpenGL 和 freeglut,它在 10.04 和 10.10 中运行良好。但是在我升级到11.04之后,我用OpenGL开发的应用程序不能正常运行。它
我正在做一个驱动模拟项目。我在 VS2010 IDE 上使用 opengl。 对象 'car_param'(不重要)有一个 vector glm::vec3 'dir',我想使用 glm\glx 旋转
我正在尝试创建一个 Linux 应用程序 - 在这种情况下是一个屏幕保护程序 - 事实证明,非常很难找到有关使窗口全屏的简单任务的信息。甚至现有屏幕保护程序的代码也没有提及它们是如何管理它的,而且我还
我正在使用 xcb 在 X11 下学习 OpenGL,我很难弄清楚视觉效果和 fbconfigs(您在 glxinfo 中找到的)之间的区别 据我所知,视觉是一组与深度缓冲区、模板缓冲区、帧缓冲区等相
Covid 让我远程工作,而我被困在这里。 我对 UI 使用 X11 转发没有问题,甚至对 3D OpenSceneGraph 可视化也没有问题,但是我需要运行的新应用程序在远程计算机上出现以下错误:
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 我们不允许在 Stack Overflow 上提出有关通用计算硬件和软件的问题。您可以编辑问题,使其成为
问题:如何获取 GLXContext 并将其传递给 clCreateContextFromType? 信息: 我正在学习 openGL CL 互操作的工作原理。我已经成功地学习了 openCL 的工作
我是一名优秀的程序员,十分优秀!