お世話になります。
DirectX11、c++でID3D11Texture2D同士をピクセル単位でコピーしたいです。
下記ソースコードのようにやってみたのですが、うまくコピーされませんでした。
ID3D11DeviceContext::CopySubresourceRegionやID3D11DeviceContext::CopyResourceは事情があり使えないため、Map/UnMapでコピー、または別の方法が知りたいです。
お分かりの方がいらっしゃいましたらご教示頂きたいです。
以上です。よろしくお願いします。
■開発環境
Visual Studio 2017 pro
C++
DirectX11.1
Windows 10 pro 1809 64bit
■ソースコード
C++
1 2HRESULT hr; 3D3D11_MAPPED_SUBRESOURCE mapd2; 4hr = m_context->Map( m_pTex2, 0, D3D11_MAP_READ, 0, &mapd2); 5if (FAILED(hr)) { 6 return hr; 7} 8 9D3D11_MAPPED_SUBRESOURCE mapd; 10hr = m_context->Map( m_pTex, 0, D3D11_MAP_WRITE_DISCARD, 0, &mapd); 11if (FAILED(hr)) { 12 return hr; 13} 14 15int width = 1600; 16int height = 900; 17DWORD color; 18LPDWORD pDst; 19UINT pitch = mapd2.RowPitch / sizeof(DWORD); 20 21for(int v = 0; v < height; v++){ 22 pDst = (LPDWORD)mapd2.pData + v * pitch; 23 for(int u = 0; u < width; u++){ 24 color = (DWORD)*pDst; 25 color = (0xFF000000 & color) | (0xFFFFFF & 0xFF0000); 26 //color = 0xFF0000FF; 27 *pDst = color; 28 pDst++; 29 } 30} 31 32m_context->Unmap(m_pTex, 0); 33m_context->Unmap(m_pTex2, 0);
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。