C++ - 重新解释此数据的最快方法

C++ - Fastest way to reinterpret this data

本文关键字:数据 方法 解释 新解释 C++      更新时间:2023-10-16

假设我有以下类:

class DX11ConstantBuffer
{
    public:
        ID3D11Buffer *pData;
};

我在函数中收到此类的数组:

DX11ConstantBuffer **pp

我的包装器(DX11ConstantBuffer)包含一个指向ID3D11Buffer的指针。以下函数:

pDevcon->VSSetConstantBuffers

需要一个指向 ID3D11Buffer s 数组的指针,

ID3D11Buffer *const *ppConstantBuffers

当函数收到指向我自己的包装器数组的指针时,从中创建ID3D11Buffer数组的最快方法是什么?为了更清楚:

void ...(DX11ConstantBuffer **pp, ....)
{
    ID3D11Buffer** _pp = GetAllID3D11BufferElementsFrom(pp);
    pDevcon->VSSetConstantBuffers(..., _pp, ...);
}

该函数旨在每帧调用几次。

最快的方法是主动的,即在需要调用 VSSetConstantBuffers 之前维护一个连续的ID3D11Buff*数组,为此您需要一个std::vector<ID3D11Buff*>。 您可以在设置DX11ConstantBuffer::pDataDX11ConstantBuffer析构函数运行时更新vector,并且如果您希望更好地保证可以pData私有并具有可以可靠地拦截更改的访问器函数。

如果你不主动地这样做,那么对于你当前的对象,你别无选择,只能迭代DX11ConstantBuffer s,并将ID3D11Buf* s逐个复制到数组/向量中。

你可以使包装器继承自它所包含的类型。