Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/opengl/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Winapi 如何在OpenGL窗口上同时显示全屏和无焦点_Winapi_Opengl_Glut - Fatal编程技术网

Winapi 如何在OpenGL窗口上同时显示全屏和无焦点

Winapi 如何在OpenGL窗口上同时显示全屏和无焦点,winapi,opengl,glut,Winapi,Opengl,Glut,假设我有一个OpenGL窗口,我调用glut函数glutFullScreen()。我的OpenGL窗口是全屏的,这部分还可以 你知道如何把它放在后台处理所有的点击/鼠标/键盘交互,就好像这个特定的窗口不存在一样(但仍然保持全屏视图)?你到底想做什么?是否要渲染屏幕大小的图像,但不希望渲染可见 只需使用帧缓冲区对象(FBO),它使渲染独立于窗口的可见性或大小。想象一下,您使用相机拍摄屏幕,然后将胶片投影回您前面的窗口。你的鼠标和键盘仍然在第一个屏幕上与你的应用程序交互,但实际上你正在看电影。然后你

假设我有一个OpenGL窗口,我调用glut函数glutFullScreen()。我的OpenGL窗口是全屏的,这部分还可以


你知道如何把它放在后台处理所有的点击/鼠标/键盘交互,就好像这个特定的窗口不存在一样(但仍然保持全屏视图)?

你到底想做什么?是否要渲染屏幕大小的图像,但不希望渲染可见


只需使用帧缓冲区对象(FBO),它使渲染独立于窗口的可见性或大小。

想象一下,您使用相机拍摄屏幕,然后将胶片投影回您前面的窗口。你的鼠标和键盘仍然在第一个屏幕上与你的应用程序交互,但实际上你正在看电影。然后你可以对你录制的电影做任何你想做的事情,比如旋转它,对它应用特效等等。现在,回到我关心的问题,我希望渲染场景在一个全屏窗口上(我希望看到它),但是,我希望我的鼠标和键盘不要与它交互,不要与这个全屏窗口“后面”的东西交互。@Al_th:恐怕这不太可能。基本上,当您单击窗口的可见部分时,窗口管理器会将所有事件定向到该窗口。键盘事件略有不同,因为在这种情况下,重点才是相关的。然而,您想要实现窗口合成时所描述的声音:使用OpenGL在桌面上渲染窗口,以便可以应用各种漂亮的效果。有一些特殊的API来实现合成,它们还负责输入重定向。但是合成API依赖于操作系统。@Al_th:在Linux/X11上实现合成比在Windows上容易得多。因为Windows Vista有一个合成器API可用,但是当你使用它时,你必须替换Windows Vista合成器。好吧,我不想做合成(如果我在维基百科上读到的是真的)。真正的问题是,我希望能够通过在不同的表面上渲染应用程序窗口来模拟虚拟环境中的多屏幕,这些表面可以放在我想要的任何地方,然后使用常规的FPS游戏技术四处查看。最后,我将使用occulus VR作为第二个屏幕,但现在我想在我唯一的屏幕上模拟它。谢谢anyway@Al_th:虽然这看起来与经典合成不同,但也可以为该应用程序使用合成API。合成过程中发生的事情是,每个窗口都被“移出”屏幕。然后,合成器将每个窗口作为一个单独的pixmap(它可以在OpenGL中用作纹理)来绘制它,无论它认为合适还是合适。我不知道如何使用Windows复合API,但我有使用X11复合扩展的经验。您所描述的使用X11 Composite和基于OpenGL的合成器是完全可行的。