X-Git-Url: https://git.cworth.org/git?a=blobdiff_plain;ds=sidebyside;f=retrace%2Fdxgistate.cpp;h=3cf4c746bdd4b32dda52a202c5a32075005d22e8;hb=d9d9d22837705de6a2c42ad3f9b23223a2b98fe0;hp=0b1bf76a291aa0aef19857a51aa964ac5a701d91;hpb=4bdfcb9bb7171abf05a4d814e2eb56c9c11ddc64;p=apitrace diff --git a/retrace/dxgistate.cpp b/retrace/dxgistate.cpp index 0b1bf76..3cf4c74 100644 --- a/retrace/dxgistate.cpp +++ b/retrace/dxgistate.cpp @@ -42,8 +42,11 @@ namespace d3dstate { static DXGI_FORMAT -ChooseConversionFormat(DXGI_FORMAT Format) +ChooseConversionFormat(DXGI_FORMAT Format, unsigned &numChannels, image::ChannelType &channelType) { + numChannels = 4; + channelType = image::TYPE_UNORM8; + switch (Format) { // Float @@ -58,7 +61,8 @@ ChooseConversionFormat(DXGI_FORMAT Format) case DXGI_FORMAT_R9G9B9E5_SHAREDEXP: case DXGI_FORMAT_BC6H_UF16: case DXGI_FORMAT_BC6H_SF16: - return DXGI_FORMAT_R8G8B8A8_UNORM; + channelType = image::TYPE_FLOAT; + return DXGI_FORMAT_R32G32B32A32_FLOAT; // Unsigned normalized case DXGI_FORMAT_R16G16B16A16_UNORM: @@ -138,7 +142,9 @@ ChooseConversionFormat(DXGI_FORMAT Format) case DXGI_FORMAT_D24_UNORM_S8_UINT: case DXGI_FORMAT_D32_FLOAT_S8X24_UINT: case DXGI_FORMAT_D16_UNORM: - return DXGI_FORMAT_R8G8B8A8_UNORM; + numChannels = 1; + channelType = image::TYPE_FLOAT; + return DXGI_FORMAT_D32_FLOAT; // Typeless case DXGI_FORMAT_UNKNOWN: @@ -243,13 +249,15 @@ ConvertImage(DXGI_FORMAT SrcFormat, UINT SrcPitch, UINT Width, UINT Height) { + unsigned numChannels; + image::ChannelType channelType; - DXGI_FORMAT DstFormat = ChooseConversionFormat(SrcFormat); + DXGI_FORMAT DstFormat = ChooseConversionFormat(SrcFormat, numChannels, channelType); if (DstFormat == DXGI_FORMAT_UNKNOWN) { return NULL; } - image::Image *image = new image::Image(Width, Height, 4); + image::Image *image = new image::Image(Width, Height, numChannels, false, channelType); if (!image) { return NULL; }