我在理解ID3D11Device
和ID3D11DeviceContext
之间的区别时遇到了一些问题。
ID3D11Device
是您用于控制ID3D11DeviceContext
的函数的GPU和device
的代表吗? ID3D11RenderTargetView
对象中,不是吗? 最佳答案
ID3D11Device
用于创建资源,例如,管道中的许多着色器。ID3D11DeviceContext
用于将这些资源绑定(bind)到管道,例如许多着色器。
device->CreatePixelShader(/*arguments*/);
context->PSSetShader(/*pass shader created with 'device'*/);
这样就不会有1个执行所有操作的“上帝”对象(这是一个
:)
猜测)。ID3D11DeviceContext
可以。我猜用“Image”表示纹理,如果是的话,则图像不会“发送”,而是使用Draw
方法复制到后台缓冲区。是的,采用
ID3D11Resource
的形式,该格式将作为后台缓冲区“纹理”(Draw
调用绘制到该“纹理”中)。有点宽。交换链存储后备缓冲区纹理以及许多其他信息,例如如何翻转缓冲区,与之关联的窗口,等等。当您对某些内容进行
Draw
编码时,将使用此信息。因此,我猜
ID3D11Resource
是与交换链“连接”的,因为它们存储了它使用的后缓冲区纹理。