DirectX 11 渲染到特定区域
DirectX 11 render to specific area
我只是想知道 DirectX 11 是否允许我设置要渲染的区域而不是渲染整个区域 window。
非常感谢!
是,使用ID3D11DeviceContext::RSSetViewports
and the D3D11_VIEWPORT
结构。将 TopLeftX
、TopLeftY
、Width
和 Height
成员设置为 window 维度的部分将导致渲染目标被绘制到该部分后台缓冲区。
值得注意的是,如果您针对应用程序的主 window 句柄创建交换链,这不会阻止 DXGI 清除整个应用程序 window。如果您需要混合 Win32 控件和 Direct3D 内容,请专门为 Direct3D 内容创建一个子 window,针对该 window 创建一个交换链,然后将子 window 添加到主应用程序window.
终于明白了,所以要渲染到主 window 应用程序的特定矩形区域。您首先需要创建第二个 childhWnd 让 DirectX 渲染,然后使用 setParent() 将此 childhWnd 附加到您的主 hWnd 以总共只显示一个 window。
我只是想知道 DirectX 11 是否允许我设置要渲染的区域而不是渲染整个区域 window。 非常感谢!
是,使用ID3D11DeviceContext::RSSetViewports
and the D3D11_VIEWPORT
结构。将 TopLeftX
、TopLeftY
、Width
和 Height
成员设置为 window 维度的部分将导致渲染目标被绘制到该部分后台缓冲区。
值得注意的是,如果您针对应用程序的主 window 句柄创建交换链,这不会阻止 DXGI 清除整个应用程序 window。如果您需要混合 Win32 控件和 Direct3D 内容,请专门为 Direct3D 内容创建一个子 window,针对该 window 创建一个交换链,然后将子 window 添加到主应用程序window.
终于明白了,所以要渲染到主 window 应用程序的特定矩形区域。您首先需要创建第二个 childhWnd 让 DirectX 渲染,然后使用 setParent() 将此 childhWnd 附加到您的主 hWnd 以总共只显示一个 window。