Я пытаюсь визуализировать текстуру в D3D11, но всякий раз, когда я это делаю, данные текстуры пусты и ничего не рисует. Я создаю и рендеринг в текстуру в следующей функции:
_TextureBufferDescription.Width = int( vecMax.x - vecMin.x );
_TextureBufferDescription.Height = int( vecMax.y - vecMin.y );
_TextureBufferDescription.MipLevels = 1;
_TextureBufferDescription.ArraySize = 1;
_TextureBufferDescription.Format = DXGI_FORMAT_R8G8B8A8_UNORM;
_TextureBufferDescription.SampleDesc.Count = 1;
_TextureBufferDescription.SampleDesc.Quality = 0;
_TextureBufferDescription.Usage = D3D11_USAGE_DEFAULT;
_TextureBufferDescription.BindFlags = D3D11_BIND_RENDER_TARGET;
_TextureBufferDescription.CPUAccessFlags = D3D11_CPU_ACCESS_READ;
_TextureBufferDescription.MiscFlags = 0;
_TextureDescription.Width = int( vecMax.x - vecMin.x );
_TextureDescription.Height = int( vecMax.y - vecMin.y );
_TextureDescription.MipLevels = 1;
_TextureDescription.ArraySize = 1;
_TextureDescription.Format = DXGI_FORMAT_R8G8B8A8_UNORM;
_TextureDescription.SampleDesc.Count = 1;
_TextureDescription.SampleDesc.Quality = 0;
_TextureDescription.Usage = D3D11_USAGE_STAGING;
_TextureDescription.BindFlags = 0;
_TextureDescription.CPUAccessFlags = D3D11_CPU_ACCESS_READ;
_TextureDescription.MiscFlags = 0;
_RenderTargetViewDescription.Format = DXGI_FORMAT_R8G8B8A8_UNORM;
_RenderTargetViewDescription.ViewDimension = D3D11_RTV_DIMENSION_TEXTURE2D;
_RenderTargetViewDescription.Texture2D.MipSlice = 0;
_Drawing.pDevice->CreateTexture2D( &_TextureBufferDescription, nullptr, &pRenderedTextureBuffer );
_Drawing.pDevice->CreateTexture2D( &_TextureDescription, nullptr, &pRenderedTexture );
_Drawing.pDevice->CreateRenderTargetView( pRenderedTextureBuffer, &_RenderTargetViewDescription, &pNewRenderTarget );
_Drawing.pContext->OMSetRenderTargets( 1, &pNewRenderTarget, _Drawing.pDepthStencilView );
_Drawing.pContext->ClearRenderTargetView( pNewRenderTarget, D3DXCOLOR( 0.f, 0.f, 0.f, 0.f ) );
Draw( );
_Drawing.pContext->OMSetRenderTargets( 1, &_Drawing.pRenderTargetView, _Drawing.pDepthStencilView );
_Drawing.pContext->CopyResource( pRenderedTexture, pRenderedTextureBuffer );
pNewRenderTarget->Release( );
return pRenderedTexture;
Функция рисования определяется следующим образом:
auto uStride = sizeof( vertex_t ), uOffset = 0u;
_Drawing.pContext->PSSetShader( pTexture == nullptr ? _Drawing.pStandardPixelShader : _Drawing.pTexturedPixelShader, nullptr, 0 );
_Drawing.pContext->PSSetShaderResources( 0, 1, &pTexture );
_Drawing.pContext->IASetIndexBuffer( pIndexBuffer, DXGI_FORMAT_R32_UINT, 0 );
_Drawing.pContext->IASetVertexBuffers( 0, 1, &pVertexBuffer, &uStride, &uOffset );
_Drawing.pContext->IASetPrimitiveTopology( _Topology );
_Drawing.pContext->DrawIndexed( vecIndices.size( ), 0, 0 );
Все функции возвращают S_OK, поэтому ни одна из них, похоже, не работает. Все, что создано, не является nullptr. Любая помощь приветствуется.