代码之家  ›  专栏  ›  技术社区  ›  Santi Peñate-Vera

远程桌面上的Java渲染

  •  4
  • Santi Peñate-Vera  · 技术社区  · 8 年前

    服务器中的所有java程序都无法通过远程桌面进行渲染。如果我在服务器位置访问服务器本身,它们看起来没问题。

    enter image description here

    我在其他线程中看到,更改英伟达配色方案等可以有所帮助,但服务器使用的是默认图形。

    5 回复  |  直到 6 年前
        1
  •  5
  •   Santi Peñate-Vera    8 年前

    • 启动远程连接时,打开连接选项。
    • 转到颜色
    • 选择16位颜色。

    完成。

        2
  •  2
  •   Rodolfo Ribeiro    6 年前

    当通过RDP连接到Windows 7机器时,这起到了作用:

    • 转到“显示”选项卡;
    • 高颜色(15位) .

    (我会发表评论,但目前我没有足够的声誉)。

        3
  •  1
  •   Matthew Millar    5 年前

    Some applications does not show content (white window) Windows 10 host

    请参阅' '在下面。

    摘要

    基于应用程序在连接和不连接监视器的情况下的行为,从表面上理解 graphics accelerators ,以及我在下面引用的论坛帖子中的经验,我认为无内容窗口的原因是应用程序依赖于DirectDraw或Direct3D子系统(与3D加速硬件接口),当加速器由于监视器断开而被禁用时。

    我认为,在使用Wine兼容层在Linux环境中运行依赖3D加速的应用程序时,我也遇到过类似的问题( https://bugs.winehq.org/buglist.cgi?component=directx-d3d&product=Wine&resolution=--- )

    这可能是3D图形处理器的省电功能,在未检测到屏幕时激活,或者可能与帧缓冲区不知道支持的输出分辨率有关,因此无法访问Windows shell的GPU,从而导致Windows恢复为仅软件渲染;或者其他原因。

    解决方案

    裁判: https://superuser.com/a/496775

    AGP纹理加速:启用

    除了创建Direct3D\Drivers键之外,我还手动创建了这些注册表值:

    Reg Add HKLM\SOFTWARE\Microsoft\DirectDraw /V EmulationOnly /T REG_DWORD /D %_Mode% /F
    
    Reg Add HKLM\SOFTWARE\Microsoft\Direct3D\Drivers /V SoftwareOnly /T REG_DWORD /D %_Mode% /F
    

    Direct3D加速:禁用

    当分离监视器时,Java程序窗口现在通过VNC查看器正确呈现内容。

    研究和参考文献

    在下面的每个标题中,都有一个论坛帖子的记录,这些帖子被认为是导致上述解决方案的研究的一部分。

    每一节的结尾要么记录了应用引用线程中提出的解决方案的结果,要么记录了线程与我的环境不相关的原因;但解决方案可能与其他人有关。

    裁判: https://www.auslogics.com/en/articles/disable-hardware-acceleration-in-windows/

    当显示器断开连接时,尝试阻止GPU(ATI Mobility Radeon HD 4500)禁用硬件加速

    裁判: https://social.technet.microsoft.com/forums/windows/en-us/8a9b5aa7-fe33-4e6d-b39b-8ac80a21fdc2/disable-monitor-off-detection-how?forum=w7itprogeneral

    ?显示检测? ,以防止检测到断开,避免禁用硬件加速

    [HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\Class\{4d36e968-e325-11ce-bfc1-08002be10318}\0000]
    "Display_Detection_DEF"=dword:00000001
    

    为ATI卡创建/空DMMEnableDDCPolling-参考:NetMage发布

    [HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\Class\{4d36e968-e325-11ce-bfc1-08002be10318}\0000]
    "DMMEnableDDCPolling"=dword:00000000
    

    更合适的解决方案是,无论监视器检测如何,都可以强制3D硬件加速“始终打开”。

    裁判: https://forums.guru3d.com/threads/disable-hardware-acceleration-for-java.296918/#post-4096709

    没有尝试,因为我的系统上没有Java控制面板

    裁判: https://stackoverflow.com/a/36235217

    http://docs.oracle.com/javase/8/docs/technotes/guides/2d/flags.html

    _JAVA_OPTION=-Dsun.java2d.d3d=false -Dsun.java2d.noddraw=true
    
    J2D_D3D=false
    

    如果这样做有效,它将是理想的解决方案,因为它是一种特定于Java的配置,而不是上面介绍的解决方案,它需要进行完整的系统更改,以弥补特定于Java的问题。

    也许JRE 8的文档已经过时,新版本可以使用另一种方法。一旦我意识到了这个解决方案,我就没有去搜索更新的文档或其他解决方案。

    在Windows 7上禁用Direct3D加速

    How to disable Direct3D Acceleration on Windows 7?

    https://stackoverflow.com/a/25508331

    我没有运行32位版本的Windows 7

    在Windows 8[/10]上禁用DirectDraw和Direct3D加速

    https://superuser.com/questions/495303/how-do-i-disable-directdraw-and-direct3d-acceleration-on-windows-8

    directx指南。cpl-更改32位DirectDraw和Direct3D,但不更改64位(dxdiag 32/64位): https://superuser.com/a/504510

        4
  •  1
  •   hol    5 年前

    从远程会话注销(不仅仅是断开连接)对我来说改变了它。也许这个答案对一些在这篇文章中结束的人有帮助,因为他们在远程连接上玩了一点之后,在Java应用程序上有一个有趣的超大边框。

    我通过windows 10使用mac parallels软件远程连接。然后我对parallels进行了配置更改。然后我在我的mac电脑上建立了vpn和远程连接,出现了问题。我在远程站点上注销和登录,它变得“正常”。

        5
  •  0
  •   Sam    8 年前

    出现问题的原因可能是您作为另一个用户连接和/或作为远程桌面用户具有不同的权限。我对xrdp有一些问题。