Перемешанный вывод текстуры при использовании D3D11_MAPPED_SUBRESOURCE и Map / Unmap - PullRequest
0 голосов
/ 05 мая 2019

Я пытаюсь изменить данные в Texture2D с помощью Map / Unmap и сталкиваюсь с проблемой, когда текстура появляется только в верхней пятой части экрана, а остальные - просто случайные пиксели. (скриншот для уточнения)

Вот код:

uint32_t* m_colorBuffer; //buffer to fill the texture with random colors
D3D11_SUBRESOURCE_DATA m_textureData;
ID3D11Texture2D* m_texture;

D3D11_MAPPED_SUBRESOURCE mappedResource;
m_deviceContext->Map(m_texture, 0, D3D11_MAP_WRITE_DISCARD, 0, &mappedResource);

uint32_t rowSize = 256 * 4;
BYTE* mappedData = reinterpret_cast<BYTE*>(mappedResource.pData);
for (int i = 0; i < 256; i++) {

    memcpy(mappedData, &(m_colorBuffer[i*rowSize]), rowSize);
    mappedData += mappedResource.RowPitch;
}

m_deviceContext->Unmap(m_texture, 0);

Может кто-нибудь сказать, пожалуйста, что я здесь делаю не так? Я был бы рад предоставить больше кода, если это необходимо.

1 Ответ

2 голосов
/ 05 мая 2019

Похоже, мой rowSize указан в байтах, и я использую его для индексации m_colorBuffer.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...