Если мы хотим обновить структуру константного буфера, содержит вектор, просто используйте copyMemory или memcpy со стартовым указателем структуры и размером структуры, не будет копировать векторные данные, это правильно?Данные массива DirectX копируются в постоянный буфер
struct PerObjectCB {
XMFLOAT4X4 World;
XMFLOAT4X4 WorldInvTranspose;
XMFLOAT4X4 TexTransform;
Material Mat;
vector<XMFLOAT4X4> BoneTransforms;
};
PerObjectCB Data = {.,.,., ..., {/*BoneTransforms data*/}};
ID3D11Buffer* mBuffer;
ID3D11_BUFFER_DESC desc = {...};
device->CreateBuffer(&desc, 0, &mBuffer);
D3D11_MAPPED_SUBRESOURCE mappedResource;
dc->Map(mBuffer, 0, D3D11_MAP_WRITE_DISCARD, 0, &mappedResource);
CopyMemory(mappedResource.pData, &Data, sizeof(Data));
dc->Unmap(mBuffer, 0);
я эти обновления постоянных кодов буфера в шаблоне класс, то я могу использовать этот класс для управления обновлением постоянного буфера, однако, когда я сталкиваюсь с векторной анимацией данных, я проверяю с соиЬ < < SizeOf (вектор < XMFLOAT4X4> BoneTransforms), независимо от того, сколько данных я помещаю в вектор, размер этого вектора всегда равен 12, я полагаю, что структура хранит только начальный адрес вектора, действительно данные находятся где-то в другом месте. Если это так, как я могу справиться с этим?
Должен ли я отказаться от класса шаблона, который я написал для управления постоянным буфером, и написать конкретную функцию для данных типа массива обновлений?