我目前正在使用Java开发通知应用程序。
我需要让窗口在任何应用程序之上很快(大约10秒)。包括运行OpenGL和DirectX的那些(例如电脑游戏)。我知道JFrame.setAlwaysOnTop(true);
仅适用于基于窗口的环境,而OpenGL和DirectX则不适用。
想过OpenGL绑定,但似乎找不到任何关于DirectX的东西?
也许有可能使用JNI? 欢迎任何想法: - )
编辑:感谢你们的答案,但我实际上放弃了它并决定在窗口全屏模式下强制进行游戏,我正在制作叠加层。我只需要等待,看看测试人员对降低的fps有什么看法:-)再次感谢
答案 0 :(得分:0)
不要打扰directx和java。这具有阻抗不匹配。 Java是跨平台的,OpenGL是跨平台的。如果您坚持使用directx,您可以尝试SWT,因为它使用您可能有机会的本机操作系统资源。
对于opengl你正在寻找的是与面板/ jframe的画布集成,你可以使用JOGL。我认为lwjgl也有一个实现,但是jogl one更好。然后你可以在那个jframe上设置alwaysOnTop。
kenai.com/projects/jogl
答案 1 :(得分:0)
您的问题与您的代码无关,而是图形设备。 该设备在全屏模式下只能有一个加速表面。这就是为什么如果你有一个正常的头部GPU,你不能全屏启动两个DirectX游戏。
最好的办法是尝试找到DX / OpenGL表面指针并使用所需的API连接到它。我不知道这是否可以用Java完成,但方法可能是:
如果不对每帧使用Vsync和刷新率同步重复,这可能会引入闪烁。这也可能引入大幅度的帧速率下降。
这方面的一个例子是FRAPS,它在加速应用程序上绘制当前帧速率。