问题标签 [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.
x11 - 确定我的应用程序是否连接到本地 X 服务器的简单方法?
创建 GLX 上下文时,您必须指定是否要直接渲染。直接渲染有时会提供性能优势,因此最好使用它,但它不能与远程 X 服务器一起使用。
是否有一种简单可靠的方法来确定我的应用程序是否连接到本地服务器?
c - 使用 X 调用渲染到 GLX 后台缓冲区?
我正在玩 GLX 和 xlib,我很好奇在 openGL 缓冲区上使用直接 X 调用进行渲染。glx简介清楚地表明:
GLX 扩展的 X 服务器使其视觉的子集可用于 OpenGL 渲染。使用这些视觉对象创建的可绘制对象也可以使用核心 X 渲染器和/或与所有核心 X 视觉对象兼容的任何其他 X 扩展进行渲染。
而且,确实,我可以用一些彩虹效果渲染一个简单的四边形,然后用 xlib 调用在它上面绘制。 但是,GLX 使用后缓冲区扩展了 X 窗口,我必须先将其交换到前面,然后才能直接渲染到窗口。我的问题是:是否可以在 openGL 完成后使用 X 渲染到后台缓冲区,然后将该缓冲区批发交换到前面,从而在我的 openGL 和 X 图形上提供无闪烁动画?
opengl-es-2.0 - Libgdx 不使用 Opengl ES 2.0
最好,我想将 OpenGL ES 2.0 用于我开始制作的新 3d 游戏。无论如何,我一直在 2010 年购买的 Ubuntu PC(不是顶级但不错)上开发它。
Gdx.graphics.isGL20Available() 返回 false,我很确定我的驱动程序支持 3.3.0。这是我从 glxinfo 收到的信息:
还有更多与版本字符串和/或扩展无关的内容。我拥有 Opengl ES 2.0 所需的所有扩展,并且我的驱动程序已更新到 3.3.0(大约 OpenGL 3.0->2.0 ES)。是因为我的软件光栅器太旧了吗?如果是这样,可能还有其他人处于相同的情况(我什至不认为有那么多 Windows 安装更新超过 1.1),我也想支持他们。最好的解决方案是什么?
c++ - X11/GLX - 全屏模式?
我正在尝试创建一个 Linux 应用程序——在这种情况下是一个屏幕保护程序——事实证明,要找到有关使窗口全屏的简单任务的信息非常困难。甚至现有屏幕保护程序的代码也没有提及他们如何管理它,而且我还没有看到任何明显的功能,例如XRemoveDecoration()
.
经过一番摸索,我确实设法创建了一个与桌面大小相同的窗口,其中:
但这并不能摆脱标题栏和边框。显然,我知道有一种方法 - 但我还没有找到任何指向那个方向的东西,它不依赖于其他一些大型库被扔在上面(现有的屏幕保护程序肯定没有使用)。
编辑:请不要从我的帖子中删除信息。我明确指出现有的屏幕保护程序没有使用可选库是有充分理由的,那是因为我过去一天的大部分时间都在分析源代码。
我选择了最直接回答问题的答案,并且通常适用于一般应用程序。
如果您在研究 xscreensavers 时发现了这个问题……同样适用。是的,xscreensaver 有自己的 API - 这很复杂,实际上涉及编写更多代码行(是的,认真的)。如果您希望在屏幕保护程序中使用 OpenGL,则需要通过另一个API(xlockmore,一个竞争系统)和一个将其转换为 xscreensaver 的兼容层。
但是,xscreensaver 能够运行任何可以使用虚拟根窗口(查看 vroot.h)作为屏幕保护程序的程序。所以我的建议是这样做——你将拥有更多的控制权、没有限制的 API 和更大的可移植性。(我看过的一个例子甚至可以为 Linux 或 Windows 编译,使用相同的文件!)
c++ - 调用 XCreateWindow() 时产生带有 GLX 错误的 XLib
从原始帖子编辑和简化:
我收到以下错误:
从我的角度来看,使用下面的代码,调用时代码在窗口对象中崩溃(见下文)XCreateWindow()
:
应用对象
窗口对象
ogldevice 对象
司机
在 Fedora 14、RHEL 6.1 和 Ubuntu 10.04 LTS 中运行时,我遇到了同样的错误。这使我相信这是我传递给的 glx 属性的问题glxChooseVisual
。
c++ - 如何链接 GLX?
我正在尝试在基于 Linux 的系统上找到用于链接 GLX 的编译器标志。到目前为止,我有(在 qt Creator 中):
但是,这仍然给了我glxChooseVisual was not declared in this scope
,从而阻止了我的代码编译。
c - 未找到 glXCreateContextAttribsARB(在 OpenGL 4.2 驱动程序、GLX 1.4 上)
奇怪的是,尽管我有 GLX 1.4,但我的仓库中似乎没有glXCreateContextAttribsARB
。
我想知道这是否有任何合理的解释?这不可能是一个普遍的问题。
glxinfo
显然缓冲区绑定,ARB
以及所有其他好东西都受支持,但为什么不glXCreateContextAttribsARB
呢?
更奇怪的是,我所拥有的是glXCreateContextAttribsARBPRoc
,我很想知道它是否可以作为替代品?
这会编译,例如:
c++ - 在多台显示器上使用 GLX RHEL -- OpenGL、XLib 和多台显示器(带线程)
我面临的问题是我有一个基于 glx 的应用程序,它可以很好地在单个线程上呈现基本原语。我可以在两个屏幕之间移动 XWindow,并且我的渲染循环继续进行。但是,如果我的应用程序的任何部分都有线程,即使它没有进行任何 openGL 调用或触摸任何其他线程上的 XWindow,但当我将 XWindow 从一个屏幕移动到另一个屏幕时,我渲染的图形的主线程会丢失。
我做的第一个函数调用是 XInitThreads,所以我知道 X11 应该是线程安全的。正如我所说,这在一个线程上绘制基元时有效,但当我添加 1 个或多个线程时它不起作用。线程位于我无权访问源的库中。我只是被要求使用 X11 创建代码的窗口部分。
我应该寻找什么来解决这个问题?
另请注意,我已经保证所有 glcalls 都发生在我从库内部调用它们的线程上。
更新
c - 调用 XCreateColormap 创建分段错误
出于某种原因,我XCreateColormap
在 XLib 中的调用给了我一个分段错误。有趣的是,我使用的大部分代码与我在网上看到的代码几乎相同,该代码展示了如何使用 XLib 和 GLX 创建窗口和 OpenGL 上下文。
在细节方面,我有一个名为 的结构OVI_UnixDisplayData
,它基本上充当所有相关 X Window/GLX 数据的容器,用于创建窗口并为其分配上下文。我最初有一个函数,旨在创建一个上下文,然后返回一个指向该数据结构的指针。该结构被称为just dat
(用于数据)。
SegFault的发生
我检查了我自己的 GLX 版本,它返回为1.4,所以这不是问题。最重要的是,在我的调试器中,我知道它dat->visualinfo->visual->ext_data
的值是 0x0,所以如果这与它有关,我不会感到惊讶。问题是我不知道如何(如果有的话),而且我不知道要调用什么函数来正确初始化它,因为它的行为似乎更像是链接的类 C 实现-列表。
有人可以对此有所了解吗?我需要信息,虽然谷歌搜索给了我一些关于其他人遇到此函数调用的段错误的结果,但他们中没有一个人有与我类似的原因发生这种情况。
如果这意味着什么,我正在运行 GLX 1.4 和 OpenGL 4.2
c - OpenGL 渲染上下文生成“失败请求 152 (GLX) 的操作码”(Mesa 8.0 - OpenGL 3.0,Linux)
这是一个大问题:首先,虽然我对 XLib API有所了解,但我想测试并确保在我做任何事情之前我实际上可以创建一个 OpenGL 渲染上下文(3.0),因此我只是复制并粘贴一些测试代码并运行它。
当我运行代码时,我的输出如下:
此外,随后调用glxinfo
生产
根据这个规范,我的可能应该工作 - 对吗?如果没有,我能做些什么来改变它?我读过的任何有关此类问题的论坛帖子通常都是由于人们在尝试初始化上下文时缺乏正确的 OpenGL 3.x 实现,这导致他们的输出与我测试过的代码相似.
我还为我的发行版搜索了各种 X11 包,以查看我是否可能会或可能不会错过一些偶然的东西。当然,这是徒劳的,因为我最终安装/更改的任何东西要么让事情变得更糟,要么根本不起作用。
xorg.conf
执行代码
我很困惑这是怎么发生的。有人可以为这个问题提供一些见解和/或解决方案吗?