我正在尝试使用Map / Unmap更改Texture2D中的数据,并且遇到一个问题,即纹理似乎仅出现在屏幕的顶部5处,其余的只是随机像素。 (screenshot for clarification)
以下是一些代码:
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);
有人可以告诉我我在做什么错吗? 如果需要,我很乐意提供更多代码。
答案 0 :(得分:2)
好像我的rowSize以字节为单位,我正在用它来索引m_colorBuffer。