D3D11
+ -

CPU对GPU的资源更新

2024-05-27 20 0
原文转自:https://blog.csdn.net/l1987021/article/details/84394522

对渲染的数据进行更新有四种方法:
CPU调用:

  • ID3D11DeviceContext::Map
    如果想更新GPU中的resource,可以通过map()函数来让CPU读写GPU的数据;

GPU调用:

  • ID3D11DeviceContext::CopySubresourceRegion
  • ID3D11DeviceContext::CopyResource
  • ID3D11DeviceContext::UpdateSubresource

通过ID3D11DeviceContext::CopyResource(),ID3D11DeviceContext::UpdateSubresource()等来直接让GPU写更新它自己的resource
资源创建时都会描述资源的D3D11_USAGE 特性:

  • D3D11_USAGE_DEFAULT
  • D3D11_USAGE_IMMUTABLE
  • D3D11_USAGE_DYNAMIC
  • D3D11_USAGE_STAGING
    这四种针对不同的CPU和GPU访问权限的情况

更新VertextBuffer

void IAVertexBuffer::Update(Graphics& gfx,std::vector<unsigned char>& vecVertext, UINT stride)
{
    GetContext(gfx)->UpdateSubresource(m_pVertexBuffer.Get(), 0, NULL, &vecVertext[0], stride, 0);
}

0 篇笔记 写笔记

作者信息
站长漫谈
取消
感谢您的支持,我会继续努力的!
扫码支持
扫码打赏,你说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

您的支持,是我们前进的动力!