diff options
| author | Matthew Parlane <parlane@gmail.com> | 2013-11-15 13:00:38 +1300 |
|---|---|---|
| committer | Matthew Parlane <parlane@gmail.com> | 2013-11-15 13:00:38 +1300 |
| commit | 033ed9477e9e2319df449b1e310de96e5c371968 (patch) | |
| tree | f746948015cb1e6c1e39d63b420f7ef282235360 /Source/Core/VideoBackends/D3D/Src/TextureCache.cpp | |
| parent | 2703cae8d3847f826c88cce4622b75c2fd725795 (diff) | |
Reworked Screenshot saving.
Now OGL doesn't rely on WX for PNG saving.
FlipImageData supports (pixel data len > 3) now.
TextureToPng is now in ImageWrite.cpp/h
Video Common depends on zlib and png.
D3D no longer depends on zlib and png.
Diffstat (limited to 'Source/Core/VideoBackends/D3D/Src/TextureCache.cpp')
| -rw-r--r-- | Source/Core/VideoBackends/D3D/Src/TextureCache.cpp | 13 |
1 files changed, 11 insertions, 2 deletions
diff --git a/Source/Core/VideoBackends/D3D/Src/TextureCache.cpp b/Source/Core/VideoBackends/D3D/Src/TextureCache.cpp index 0c6e759de5..faf83c23ca 100644 --- a/Source/Core/VideoBackends/D3D/Src/TextureCache.cpp +++ b/Source/Core/VideoBackends/D3D/Src/TextureCache.cpp @@ -14,6 +14,7 @@ #include "PSTextureEncoder.h" #include "HW/Memmap.h" #include "VideoConfig.h" +#include "ImageWrite.h" namespace DX11 { @@ -54,6 +55,8 @@ bool TextureCache::TCacheEntry::Save(const char filename[], unsigned int level) HRESULT hr = D3D::device->CreateTexture2D(&desc, NULL, &pNewTexture); + bool saved_png = false; + if (SUCCEEDED(hr) && pNewTexture) { D3D::context->CopyResource(pNewTexture, pSurface); @@ -62,13 +65,19 @@ bool TextureCache::TCacheEntry::Save(const char filename[], unsigned int level) HRESULT hr = D3D::context->Map(pNewTexture, 0, D3D11_MAP_READ_WRITE, 0, &map); if (SUCCEEDED(hr)) { - hr = D3D::TextureToPng(map, filename, desc.Width, desc.Height); + if (map.pData) + { + u8* data = new u8[map.RowPitch * desc.Height]; + memcpy(data, map.pData, map.RowPitch * desc.Height); + + saved_png = TextureToPng(data, map.RowPitch, filename, desc.Width, desc.Height); + } D3D::context->Unmap(pNewTexture, 0); } SAFE_RELEASE(pNewTexture); } - return SUCCEEDED(hr); + return saved_png; } void TextureCache::TCacheEntry::Load(unsigned int width, unsigned int height, |
