OpenGL和Windows远程桌面不兼容。
解决方案取决于使用情况,答案分散在网络的各个角落。以下是我希望在开始研究此问题时存在的内容,供编码人员和非编码人员参考。
问题:
Windows的RDP会话不会直接显示图形卡。例如,您无法更改桌面分辨率,而GraphicsCard驱动程序通常只禁用其设置菜单。由于这个原因,启动高于v1.1的OpenGL上下文会失败。通常建议尽量避免使用Windows Remote,但在许多企业环境中,Windows Remote是经常使用的工具,因此应用程序也必须在其中工作。
非编码人员的解决方法
您可以启动OpenGL程序,让它看到图形卡,创建OpenGL上下文,然后通过Windows远程连接。这总是有效的,因为Windows Remote只传输窗口内容。可以通过以下方式实现:
Coder解决方法
(仅适用于OpenGL ES)将OpenGL翻译为DirectX。 DirectX在Windows Remote下可以无缝运行,甚至在DX11中还内置了软件渲染备用方案。
作为回退方案,切换到软件渲染。例如,一些CAD软件如3dsMax就是这样做的:
- 在SDL2下,您可以使用SDL_CreateSoftwareRenderer (源)
- 在GLFW版本3.3中将发布OSMesa(Mesa的离屏渲染),与此同时,您可以使用-DGLFW_USE_OSMESA = TRUE构建Github版本,但我个人仍然难以使其运行(源)
其他:
- 使用 OpenGL 1.1:Windows内置了OpenGL 1.1及更早版本的实现。一些游戏引擎具有内置的回退选项,因此可以在 Windows 远程下工作。
- 显然有一个中间件,可以通过 Windows 远程甚至使用OpenGL 4,但它是一个商业解决方案的一部分。(来源)
欢迎提供任何其他解决方案或更正意见。
[10] Nvidia -> https://www.khronos.org/news/permalink/nvidia-provides-opengl-accelerated-remote-desktop-for-geforce-5e88fc2035e342.98417181