当前位置: 首页 > 知识库问答 >
问题:

Compiz和OpenGL窗口

陆斌
2023-03-14

我通过GLX在Linux中编写了一个OpenGL应用程序。它使用双缓冲与glXSwapBuffers和同步到VBlank设置通过NVIDIA X服务器设置设置。我正在使用Compiz,并且可以平滑地移动窗口并且没有撕裂(在Compiz设置中启用了同步到VBlank)。但当我

>

  • 尝试移动 OpenGL 窗口或调整其大小,或

    通过OpenGL窗口占用的区域移动其他窗口

    系统断断续续,停顿3-4秒。将其他窗口移出OpenGL窗口占据的区域一如既往的流畅。此外,只有当OpenGL应用程序循环产生动画帧,从而交换缓冲区时,问题才会出现。如果内容是静态的,并且应用程序没有交换缓冲区,就没有问题,移动不同的窗口是平滑的。可能是我的应用程序和Compiz之间的同步问题?

  • 共有1个答案

    邓夕
    2023-03-14

    我不知道它是否还和几年前一样,但是...

    您的描述与Compiz SNAFU非常匹配。每次调整窗口大小都会触发将接收窗口内容的纹理的重新创建。纹理创建是一项成本高昂的操作,因此应避免使用。不幸的是,Compiz开发人员似乎并不是最聪明的,因为他们没有意识到这个问题有一个明显的解决方案:X11中的Windows可以在没有太多成本的情况下重新创建父级(每个Window管理器都这样做过几次),这被称为堆叠。Compiz是一个窗口管理器。

    那么,为什么Compiz不保留一个桌面大小的窗口,它将那些即将调整大小的窗口重新定父级,从那里获得其恒定大小的窗口纹理,并在完成调整大小操作后将窗口重新定父级到其装饰框架中?

    我不知道为什么会这样,反正康皮兹做的一些事情并不是很聪明。

    如果你想解决这个问题,那么:Compiz是开源的,我刚刚描述了该怎么做。

     类似资料:
    • Compiz 是第一个由 OpenGL 驱动的运行于 X Window System 上的合成视窗管理程式 。Compiz的合成能力使其可以在窗口管理过程中实现多种视觉效果,比如在矩形虚拟桌面上的窗口最小化。 Compiz 符合 ICCCM 的标准,并且可以取代 GNOME 环境的 Metacity 视窗管理器,或是 KDE 环境下的 Kwin。 Compiz 可以提供类似苹果电脑的Mac OS

    • Compiz++是用C++语言实现的 Compiz 的版本。Compiz++不仅完全用C++重写,而且具备了许多全新特性。 Compiz++不再是一个“复合窗口管理器”,它已经分离了有关复合特性和OpenGL的层,如果你的硬件不支持的话,Compiz++就是一个标准的“窗口管理器”。这意味着,它将直接与其他窗口管理器竞争。 Compiz++目前还不支持Compiz之前具备的一些特性,如多显示器支持

    • Compiz Fusion 合并自 Compiz 和 Beryl,它不仅将 Linux 桌面带入了 3D 环境,而且包含许多既丰富又渲丽的效果。 准备配置文件 要在 Archlinux 中安装 Compiz Fusion,首先确保 /etc/X11/xorg.conf 文件的正确配置。以 NVIDIA 显卡为例: #Module 部分载入 GLX 模块: Load "glx" #

    • 我对glfw有一个小问题。 我的代码非常简单,我只想创建一个空窗口。 } 此代码编译,但当我运行它时,我只有一个白色窗口。窗口的标题是正确的,但里面的一切都是白色的......我尝试像那样使用glClearColor。 但是我的窗户仍然是白色的....我用的是visual studio 2015。 怎么弄个黑窗? 编辑: 忘了补充这个:glfwMakeContextCurrent(window);

    • 我试图在linux red hat上使用GLFW打开一个OpenGL全屏窗口。我有一个桌面,它跨越两个显示器,总分辨率为3840*1080。 我有两个问题:1。窗口仅在一台显示器上打开,最大窗口宽度为1920(单个显示器的宽度)。2.窗口的最大高度是1003(我认为是屏幕的高度减去任务栏和顶栏的高度)。 这是我用来打开窗口的代码: 输出:宽度=1920高度=1003 编辑:我使用xrandr检查可