У меня есть одноэлементный класс, который является моим основным движком.
, так как я использую D3D11, и он использует тот же метод ID3D11Device для создания всех буферов (независимо от типа), я пытаюсь создать метод шаблона длясоздайте буферы.
и то, что я использую в качестве источника для буфера, это std :: array
, поэтому сейчас я пытаюсь:
template <size_t Size, typename T>
void CreateBuffer(BufferType bufferType, const std::array <T, Size>& source, ID3D11Buffer** out) {
(...)
bd.BindFlags = bufferType;
bd.ByteWidth = sizeof(T) * source.size();
(...)
}
, а затемЯ использую это как:
ID3D11Buffer* buffer = nullptr;
array <SimpleVertex, 10> data; //this is the source data, 10 simple vertices
D3DEngine::GetInstance().CreateBuffer <10> (D3DEngine::Vertex, data, &buffer);
это работает, но выглядит так некрасиво.что «10» в качестве шаблона аргумента заставляет меня «жестко задавать» размер (я даже не могу использовать <data.size()>
, потому что для него требуется постоянная в качестве аргумента шаблона).
Есть ли лучший способ достичь того, чего я хочу?или я должен использовать другой подход?спасибо.