假设我有以下课程:
class DX11ConstantBuffer
{
public:
ID3D11Buffer *pData;
};
我在函数中收到此类的数组:
DX11ConstantBuffer **pp
我的包装器(
DX11ConstantBuffer
)包含一个指向ID3D11Buffer
的指针。以下功能:pDevcon->VSSetConstantBuffers
需要一个指向
ID3D11Buffer
数组的指针,ID3D11Buffer *const *ppConstantBuffers
当函数接收到指向我自己的包装器数组的指针时,用它创建
ID3D11Buffer
数组的最快方法是什么?为了更清楚一点:void ...(DX11ConstantBuffer **pp, ....)
{
ID3D11Buffer** _pp = GetAllID3D11BufferElementsFrom(pp);
pDevcon->VSSetConstantBuffers(..., _pp, ...);
}
该功能应在每帧中调用几次。
最佳答案
最快的方法是主动地进行操作,即在需要调用ID3D11Buff*
之前要保持VSSetConstantBuffers
的连续数组。只要设置了std::vector<ID3D11Buff*>
或运行vector
的析构函数,就可以更新DX11ConstantBuffer::pData
,并且如果希望更好地保证可以将DX11ConstantBuffer
设为私有并具有可以可靠地拦截更改的访问器功能。
如果您不主动执行此操作,则对于当前对象,您别无选择,只能遍历pData
并将DX11ConstantBuffer
逐一复制到数组/向量中。
关于c++ - C++-重新解释此数据的最快方法,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/22206375/