Предположим, что мне нужно сделать статическую картинку (100 звезд).Я генерирую звездные данные (положение, цвет, размер) для std :: vector stars;
Затем я создаю класс для D3D-рендеринга, который состоит из буфера:
CGalaxyMapRenderer
{
…
CComPtr<ID3D11Buffer> m_spStarBuffer;
}
В ctor Iинициализируйте его следующим образом:
CGalaxyMapRenderer::CGalaxyMapRenderer(const std::vector<SStarData>& vecData)
{
…
const CD3D11_BUFFER_DESC vertexBuffDescr((UINT)(sizeof(SStarData)*stars.size()), D3D11_BIND_VERTEX_BUFFER); //Constant buffer?
D3D11_SUBRESOURCE_DATA initVertexData = {0};
initVertexData.pSysMem = &stars[0];
spDevice->CreateBuffer(&vertexBuffDescr, &initVertexData, &m_spStarBuffer);
…
}
После этого я могу уничтожить std :: vector, так как он больше не нужен.
Вопросы:
spDevice->CreateBuffer(&vertexBuffDescr, &initVertexData, &m_spStarBuffer));
Где будет выделяться память для этого кода?Будет ли это графическая память или текущая память процесса?
Когда мне больше не нужно рендерить карту галактики (например, когда я хочу перейти на следующий уровень, где карта галактики не требуется)), Я собираюсь уничтожить CGalaxyMapRenderer.Произойдет автоматическое уничтожение m_spStarBuffer в dtor.Вопрос: достаточно ли очистить все ресурсы буфера?Или я должен сделать некоторые дополнительные шаги, чтобы освободить память?