Render to Texture Inversed

Я пытаюсь сделать рендеринг в текстуру, но текстура делает трафарет противоположным тому, что я хочу сделать. Т.е. чистый цвет сохраняется и обрабатывается, в то время как фактический объект, который я хочу визуализировать, является альфа-удаленным.

//Set the render target
RenderToTexture(RENDERTEXTURE_PARTICLESTAGE);
//Draw the scene (using the new render target)
m_Renderer.Draw();
//Save the file out so we can see the result
m_pRenderTextures[RENDERTEXTURE_PARTICLESTAGE]->SaveToFile(L"data/particle.tga");
This is the code I use to render to texture

В функции рендеринга в текстуру, я делаю это

m_pDeviceContext->OMSetRenderTargets(1, &m_pRenderTargetView, _pDepthStencilView);

m_pRenderTargetView быть независимым от объекта m_pRenderTexture, _pDepthStencilView передается из моего основного приложения.

Я также очищаю цель рендеринга и очищаю трафарет глубины заранее, я просто оставил код, чтобы свести вопрос к минимуму.

Я уверен, что это не просто проблема сохранения текстуры — я попытался отобразить ресурс обратно в приложение и получил тот же результат.

Я вполне уверен, что это из-за моего описания глубины трафарета, но я не уверен, что именно может быть не так.

//Depth Stencil
D3D11_TEXTURE2D_DESC DepthStencilDescription;
{
DepthStencilDescription.Width               = m_uiClientWidth;
DepthStencilDescription.Height              = m_uiClientHeight;
DepthStencilDescription.MipLevels           = 1;
DepthStencilDescription.ArraySize           = 1;
DepthStencilDescription.Format = DXGI_FORMAT_D24_UNORM_S8_UINT;
DepthStencilDescription.SampleDesc.Count    = 1;
DepthStencilDescription.SampleDesc.Quality  = 0;
DepthStencilDescription.Usage               = D3D11_USAGE_DEFAULT;
DepthStencilDescription.BindFlags           = D3D11_BIND_DEPTH_STENCIL;
DepthStencilDescription.CPUAccessFlags      = 0;
DepthStencilDescription.MiscFlags           = 0;
}
Utility::Assert(m_pDevice->CreateTexture2D(&DepthStencilDescription, 0, &m_pDepthStencilBuffer));
Utility::Assert(m_pDevice->CreateDepthStencilView(m_pDepthStencilBuffer, 0, &m_pDepthStencilView));

В отличие от моего описания текстуры в моем RenderTextureClass, который

TextureDescription.Format = DXGI_FORMAT_R8G8B8A8_UNORM;

Однако попытка сопоставить их друг с другом вызвала ошибку.

Вот результаты PIX того, что происходит:

Это я рендеринг на текстуру
Это когда я рендеринг на текстуру. Пока все выглядит хорошо …
введите описание изображения здесь
Но я сохраняю текстуру, и это выглядит так
введите описание изображения здесь
Рендеринг текстуры обратно на экран непосредственно через представление ресурса шейдера … (не проблема с функцией сохранения текстуры)
Белый цвет на самом деле является чистым цветом BackBuffer, красный цвет — чистым цветом RenderTexture. Так что это спасло противоположное от того, что я хочу.

Я ожидаю синие шары на белом фоне

Если бы кто-нибудь мог указать мне правильное направление, это было бы здорово. Ура 🙂

0

Решение

Задача ещё не решена.

Другие решения


По вопросам рекламы [email protected]