Understanding ID3D11Device and ID3D11DeviceContext
Understanding ID3D11Device and ID3D11DeviceContext
我在理解ID3D11Device
和ID3D11DeviceContext
之间的区别时遇到了一些问题。
-
ID3D11Device
是GPU的代表,ID3D11DeviceContext
用于控制device
的功能吗? -
为什么需要两个对象?
-
您对设备使用哪个功能,对设备对象使用哪个功能?
-
哪个对象将最终图像发送到后台缓冲区?
-
后缓冲区在
ID3D11RenderTargetView
对象中,不是吗? -
哪些对象连接到交换链,为什么?
ID3D11Device
用于创建资源,例如管道中的许多着色器。
ID3D11DeviceContext
用于将这些资源绑定到管道,例如许多着色器。
device->CreatePixelShader(/*arguments*/);
context->PSSetShader(/*pass shader created with 'device'*/);
但为什么需要两个对象?
这样你就没有一个"上帝"对象可以做任何事情(这是猜测:)
)。
哪个对象将最终图像发送到后台缓冲区。
ID3D11DeviceContext
确实如此。我想"图像"指的是纹理,如果是的话,图像不会被"发送",而是使用Draw
方法复制到后缓冲区。
backbuffer在ID3D11RenderTargetView对象中,不是吗?
是的,以ID3D11Resource
的形式,它将是后缓冲区"纹理"(Draw
调用draw到该"纹理"中)。
哪些对象与SwapChain连接,为什么?
这有点宽泛。交换链存储后缓冲区纹理,以及许多其他信息,如如何翻转缓冲区,与哪个窗口相关。。。当你Draw
某个东西时,就会用到这个。
所以,我猜ID3D11Resource
与交换链"连接"在一起,因为它们存储了它使用的后缓冲区纹理
ID3D11Device ID3D11DeviceContext
Purpose: FACTORY STATE of pipeline
Multithreaded: YES NO
Amount basic: one one
Amount common: one many
Amount rare: many many
相关文章:
- 没有找到相关文章