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

时间:2014-03-05 18:38:39

标签: c++ arrays pointers wrapper directx-11

假设我有以下课程:

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, ...);
}

该功能意味着每帧被调用几次。

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:1)

最快的方式是主动,即在需要致电ID3D11Buff*之前保持连续的VSSetConstantBuffers数组,您需要std::vector<ID3D11Buff*>。您可以在设置vectorDX11ConstantBuffer::pData的析构函数运行时更新DX11ConstantBuffer,如果您想要更好地保证,可以使pData为私有且具有访问者功能它可以可靠地拦截变化。

如果你不主动做,那么使用你当前的对象你别无选择,只能迭代DX11ConstantBuffer并将ID3D11Buf*复制到数组/向量 - 接一个....