我试着用NVIDIARTX3090卡在windows 10虚拟机上运行一个d3d9演示。此windows vm通过windows远程桌面连接。这是我的演示:
#include <Windows.h>
#include <d3d9.h>
#include <stdio.h>
int main() {
// sleep 5 seconds and manually minimize the remote desktop window immediately after the sleep operation
Sleep(5000);
IDirect3D9* pD3d9 = nullptr;
pD3d9 = Direct3DCreate9(D3D9b_SDK_VERSION);
UINT adapters = pD3d9->GetAdapterCount();
for (UINT i = 0; i < adapters; i++) {
D3DCAPS9 caps = {};
HRESULT res = pD3d9->GetDeviceCaps(i, D3DDEVTYPE_HAL, &caps);
if (FAILED(res)) {
printf("Call GetDeviceCaps Failed:%x\n", res);
break;
}
}
pD3d9->Release();
return 0;
}
当远程桌面是窗口或全屏模式时,GetDeviceCaps
返回S_OK
。但是,当在最小化的远程桌面上运行此演示时,GetDeviceCaps
返回一个错误代码:D3DERR_NOTAVAILABLE
。
有人知道是什么导致这个电话失败的吗?
谢谢!
发布于 2022-08-17 17:24:02
当“最小化”遗留Direct3D 9无法访问GPU时。这是模拟遗留行为的一部分。Direct3D9Ex或更高版本是WDDM感知API,支持在“屏幕锁定”或“最小化”的情况下访问GPU (如果遗留Direct3D没有)。
https://stackoverflow.com/questions/73360348
复制相似问题