假设我有以下课程:

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/

10-11 21:53