我在理解ID3D11DeviceID3D11DeviceContext之间的区别时遇到了一些问题。

  • ID3D11Device是您用于控制ID3D11DeviceContext的函数的GPU和device的代表吗?
  • 为什么需要2个对象?
  • 您与设备一起使用哪个功能,以及与设备对象一起使用哪个功能?
  • 哪个对象将最终图像发送到后缓冲区?
  • 后台缓冲区在ID3D11RenderTargetView对象中,不是吗?
  • 哪些对象连接到交换链,为什么?
  • 最佳答案

    ID3D11Device用于创建资源,例如,管道中的许多着色器。
    ID3D11DeviceContext用于这些资源绑定(bind)到管道,例如许多着色器。

    device->CreatePixelShader(/*arguments*/);
    context->PSSetShader(/*pass shader created with 'device'*/);
    



    这样就不会有1个执行所有操作的“上帝”对象(这是一个:)猜测)。


    ID3D11DeviceContext可以。我猜用“Image”表示纹理,如果是的话,则图像不会“发送”,而是使用Draw方法复制到后台缓冲区。



    是的,采用ID3D11Resource的形式,该格式将作为后台缓冲区“纹理”(Draw调用绘制到该“纹理”中)。



    有点宽。交换链存储后备缓冲区纹理以及许多其他信息,例如如何翻转缓冲区,与之关联的窗口,等等。当您对某些内容进行Draw编码时,将使用此信息。

    因此,我猜ID3D11Resource是与交换链“连接”的,因为它们存储了它使用的后缓冲区纹理。

    10-08 05:20