[DX 11.2] [XAML] [C ++] [DirectXTK] SaveWICTextureToFile和SwapChainPanel [英] [DX 11.2][XAML][C++][DirectXTK] SaveWICTextureToFile and SwapChainPanel
问题描述
我正在尝试使用DirectXTK的SaveWICTextureToFile实用程序来获取屏幕截图。我正在使用带有SwapChainPanel元素的XAML。不幸的是,该方法始终保存一个填充纯色而不是当前屏幕截图的矩形。
每次调用SaveWICTextureToFile方法都会保存不同的颜色。
这是我的代码(稍微简化):
void DirectXPage :: SaveButton_Click(Platform :: Object ^ sender,Windows :: UI :: Xaml :: RoutedEventArgs ^ e)
{
critical_section :: scoped_lock lock(m_main-> GetCriticalSection());
auto folder = Windows :: Storage :: ApplicationData :: Current-> TemporaryFolder;
WCHAR fname [_MAX_PATH];
wcscpy_s(fname,folder-> Path-> Data());
wcscat_s(fname,L" \\screenshot.png");
auto context = m_deviceResources-> GetD3DDeviceContext();
auto swapChain = m_deviceResources-> GetSwapChain();
ID3D11Texture2D * backBuffer = nullptr;
HRESULT hr = swapChain-> GetBuffer(0,__ uuidof(* backBuffer),(LPVOID *)& backBuffer);
if(SUCCEEDED(hr))
{
HRESULT hr = SaveWICTextureToFile(context,backBuffer,GUID_ContainerFormatPng,fname);
DX :: ThrowIfFailed(hr);
// ... FileSavePicker等的模式代码。
}
}
我做错了什么?
谢谢,
Leszek
Wiki: wbswiki.com >
网站: www.wisenheimerbrainstorm.com
您好ata6502,
根据您的描述,此问题与DX有关。我将其移至DX相关论坛,以便您获得更好的支持。
感谢您的理解。
问候。
Hi,
I'm trying to use the SaveWICTextureToFile utility from DirectXTK to grab a screenshot. I'm using XAML with a SwapChainPanel element. Unfortunately, the method always saves a rectangle filled with solid color rather than the current screenshot. Every time I call the SaveWICTextureToFile method is saves a different color.
This is my code (somewhat simplified):
void DirectXPage::SaveButton_Click(Platform::Object^ sender, Windows::UI::Xaml::RoutedEventArgs^ e) { critical_section::scoped_lock lock(m_main->GetCriticalSection()); auto folder = Windows::Storage::ApplicationData::Current->TemporaryFolder; WCHAR fname[_MAX_PATH]; wcscpy_s(fname, folder->Path->Data()); wcscat_s(fname, L"\\screenshot.png"); auto context = m_deviceResources->GetD3DDeviceContext(); auto swapChain = m_deviceResources->GetSwapChain(); ID3D11Texture2D* backBuffer = nullptr; HRESULT hr = swapChain->GetBuffer(0, __uuidof(*backBuffer), (LPVOID*)&backBuffer); if (SUCCEEDED(hr)) { HRESULT hr = SaveWICTextureToFile(context, backBuffer, GUID_ContainerFormatPng, fname); DX::ThrowIfFailed(hr); // ... mode code for FileSavePicker etc. } }
What am I doing wrong?
Thanks,
Leszek
Wiki: wbswiki.com
Website: www.wisenheimerbrainstorm.com
Hello ata6502,
From your description, this issue is related with DX. I move it to the DX related forum so that you could get better support.
Thanks for your understanding.
Regards.
这篇关于[DX 11.2] [XAML] [C ++] [DirectXTK] SaveWICTextureToFile和SwapChainPanel的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!