C++ 了解ID3D11设备和ID3D11设备上下文
我在理解C++ 了解ID3D11设备和ID3D11设备上下文,c++,directx-11,C++,Directx 11,我在理解ID3D11Device和ID3D11DeviceContext之间的区别时遇到一些问题 ID3D11Device是否代表您的GPU和ID3D11DeviceContext用于控制设备的功能 为什么需要两个对象 设备和设备对象使用哪个函数 哪个对象将最终图像发送到backbuffer 后缓冲区在ID3D11RenderTargetView对象中,不是吗 哪些对象连接到交换链,为什么 ID3D11设备用于创建资源,例如管道中的许多着色器 ID3D11DeviceContext用于将这些资
ID3D11Device
和ID3D11DeviceContext
之间的区别时遇到一些问题
是否代表您的GPU和ID3D11Device
用于控制ID3D11DeviceContext
设备的功能
- 为什么需要两个对象
- 设备和设备对象使用哪个函数
- 哪个对象将最终图像发送到backbuffer
- 后缓冲区在
对象中,不是吗ID3D11RenderTargetView
- 哪些对象连接到交换链,为什么
ID3D11DeviceContext
用于将这些资源绑定到管道,例如,许多着色器
device->CreatePixelShader(/*arguments*/);
context->PSSetShader(/*pass shader created with 'device'*/);
但是为什么你需要两个物体呢
这样你就不会有一个“上帝”对象做任何事情(这是一个猜测:)
)
哪个对象将最终图像发送到backbuffer
ID3D11DeviceContext
没有。我猜“图像”是指纹理,如果是,图像不会被“发送”,而是被复制到后缓冲区,使用方法Draw
backbuffer在ID3D11RenderTargetView对象中,不是吗
是的,以ID3D11Resource
的形式,这将是后台缓冲区“纹理”(调用将“纹理”绘制到该“纹理”中)
哪些对象与交换链相连接?具体原因是什么
这有点宽泛。交换链存储后缓冲区纹理和许多其他信息,如如何翻转缓冲区、与之关联的窗口等。。。当您绘制
某物时,将使用此选项
因此,我猜
ID3D11Resource
s与交换链“连接”,因为它们存储它使用的后缓冲区纹理。不同的生存期。你必须与其他想要使用该设备的程序合作,如果有人从你那里偷走了它,你可以让D3DERR_DEVICELOST。就像用户Alt+Tab切换到另一个游戏一样。保持设备有效,但必须重新创建设备上下文。只问一个问题。
ID3D11Device ID3D11DeviceContext
Purpose: FACTORY STATE of pipeline
Multithreaded: YES NO
Amount basic: one one
Amount common: one many
Amount rare: many many