假设我有以下课程:
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, ...);
}
该功能意味着每帧被调用几次。
答案 0 :(得分:1)
您可以使包装器继承自它包含的类型。
答案 1 :(得分:1)
最快的方式是主动,即在需要致电ID3D11Buff*
之前保持连续的VSSetConstantBuffers
数组,您需要std::vector<ID3D11Buff*>
。您可以在设置vector
或DX11ConstantBuffer::pData
的析构函数运行时更新DX11ConstantBuffer
,如果您想要更好地保证,可以使pData
为私有且具有访问者功能它可以可靠地拦截变化。
如果你不主动做,那么使用你当前的对象你别无选择,只能迭代DX11ConstantBuffer
并将ID3D11Buf*
复制到数组/向量 - 接一个....