私は、Surface Pro で OpenGL 開発の入門コースを受講しており、ネイティブの Windows リモート デスクトップ ツールを介して開発用のより強力なデスクトップに接続したいと考えていました。最初のテスト プログラムでシェーダーに問題が発生したため、質問に至りました。シェーダーは Surface (RDP クライアント) またはデスクトップ (RDP ホスト) のグラフィックス カードによって動作しますか?
3 に答える
これは、リモート システムの構成によって異なります。標準ドライバーを備えた通常の消費者向け GPU は、RDP にハードウェア アクセラレーションをまったく提供せず、SW エミュレーション モードに移行します。ただし、RDP サーバーの実装にフックして GPU アクセラレーションを提供する特別な視覚化サーバー GPU とドライバーがあります。あなたはそれを持っていない可能性が非常に高いです。
最終的には単なるドライバーの問題であることに注意してください。適切なドライバーがあれば、すべての GPU でそれが可能になります。しかし、HW ベンダーは専用のデバイスを販売したいと考えているため、その機能を特定の製品ラインに限定しています。
Linux オープン ソース グラフィックス エコシステムの進歩により、余談ですが、近い将来、このような視覚化サーバーをコモディティ ハードウェアで実装できるようになることを願っています。Wayland プロトコルと概念を無視するのと同じくらい、その開発が Linux グラフィックス スタックの下位レベルに向けて促進する進歩が好きです。これは、Windows の世界に追いつくように圧力をかける可能性があります。
ソフトウェアを RDP セッションから実行すると、ハードウェア アクセラレーションが失われます。
ただし、一部の QnA サイトでは、アプリケーションが接続前にローカル セッションから開始された場合、RDP クライアントがハードウェア アクセラレーション グラフィックスで動作することがわかります。
そこで、次のトリックを提案します。
- 現在の RDP セッションを切断し、ハードウェア アクセラレーション グラフィックスを必要とするアプリケーションを起動するバッチ ファイルを実行します。
- アプリケーションが起動するまで数秒待ちます
- RDP に再接続します。
アプリケーションはローカル セッションから開始され、HW アクセラレーション グラフィックスを使用します。
リンクされたページでの私の回答からのバッチファイルのサンプルを次に示します。
@echo off
echo.
echo Remote Desktop will be temporarily disconnected . . . please reconnect after a few seconds.
echo.
pause
@echo on
REM The active session has an arrow as the first character
setlocal EnableDelayedExpansion
FOR /F %%A in ('qwinsta') do (
set tempSessionName=%%A
if "!tempSessionName:~0,1!"==">" (
@echo on
tscon.exe !tempSessionName:~1! /v /dest:console
@echo off
)
)
@echo off
echo.
echo Starting MyProgram.exe . . .
@echo on
start MyProgram.exe
@echo off
echo.
pause