Я уже месяц пытаюсь решить проблему с поиском в интернете.
Но теперь я должен попросить о помощи здесь.
Я хочу сделать рендеринг с использованием декодированной рамки ffmpeg.
и используя кадр (он преобразован в формат RGB32), я пытаюсь визуализировать кадр с текстурой DX2D.
ZeroMemory(&TextureDesc, sizeof(TextureDesc));
TextureDesc.Height = pFrame->height;
TextureDesc.Width = pFrame->width;
TextureDesc.MipLevels = 1;
TextureDesc.ArraySize = 1;
TextureDesc.Format = DXGI_FORMAT_R32G32B32A32_FLOAT; //size 16
TextureDesc.SampleDesc.Count = 1;
TextureDesc.SampleDesc.Quality = 0;
TextureDesc.Usage = D3D11_USAGE_DYNAMIC;
TextureDesc.BindFlags = D3D11_BIND_SHADER_RESOURCE;
TextureDesc.CPUAccessFlags = D3D11_CPU_ACCESS_WRITE;
TextureDesc.MiscFlags = 0;
result = m_device->CreateTexture2D(&TextureDesc, NULL, &m_2DTex);
if (FAILED(result)) return false;
ShaderResourceViewDesc.Format = TextureDesc.Format;
ShaderResourceViewDesc.ViewDimension = D3D11_SRV_DIMENSION_TEXTURE2D;
ShaderResourceViewDesc.Texture2D.MostDetailedMip = 0;
ShaderResourceViewDesc.Texture2D.MipLevels = 1;
D3D11_MAPPED_SUBRESOURCE S_mappedResource_tt = { 0, };
ZeroMemory(&S_mappedResource_tt, sizeof(D3D11_MAPPED_SUBRESOURCE));
result = m_deviceContext->Map(m_2DTex, 0, D3D11_MAP_WRITE_DISCARD, 0, &S_mappedResource_tt);
if (FAILED(result)) return false;
BYTE* mappedData = reinterpret_cast<BYTE *>(S_mappedResource_tt.pData);
for (auto i = 0; i < pFrame->height; ++i) {
memcpy(mappedData, pFrame->data, pFrame->linesize[0]);
mappedData += S_mappedResource_tt.RowPitch;
pFrame->data[0] += pFrame->linesize[0];
}
m_deviceContext->Unmap(m_2DTex, 0);
result = m_device->CreateShaderResourceView(m_2DTex, &ShaderResourceViewDesc, &m_ShaderResourceView);
if (FAILED(result)) return false;
m_deviceContext->PSSetShaderResources(0, 1, &m_ShaderResourceView);
но он показывает мне только черный экран (ничего не рендер).
Я думаю, это неправильный размер memcpy.
Самая большая проблема в том, что я не знаю, в чем проблема.
Вопрос 1:
Есть ли проблемы с созданием 2D текстуры для отображения?
Вопрос 2:
Какой размер параметров memcpy мне следует ввести (связанный с форматированием)?
Я по ссылке ниже.
[1] https://www.gamedev.net/forums/topic/667097-copy-2d-array-into-texture2d/
[2] https://www.gamedev.net/forums/topic/645514-directx-11-maping-id3d11texture2d/
[3] https://www.gamedev.net/forums/topic/606100-solved-dx11-updating-texture-data/
Спасибо за просмотр, ответьте.