Advertisement
Guest User

Untitled

a guest
Jul 7th, 2020
24
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.69 KB | None | 0 0
  1. bool
  2. CPluginViewD3D11::UploadTexture(
  3. char* pPluginName,
  4. char* pPictureName,
  5. void*& TextureHandle,
  6. void*& ShaderResourceView
  7. )
  8. {
  9. bool isAlpha = false;
  10. u32 pImageSize = 0;
  11. u32 pImageWidth = 0;
  12. u32 pImageHeight = 0;
  13. void* ppRawData = nullptr;
  14.  
  15. if (!LoadImageFromFile(pPluginName, pPictureName, &ppRawData, &pImageSize, &pImageWidth, &pImageHeight, &isAlpha)) return false;
  16. #ifdef _DEBUG
  17. assert(!isAlpha);
  18. #endif
  19.  
  20. D3D11_TEXTURE2D_DESC desc = {};
  21. D3D11_SUBRESOURCE_DATA initData = {};
  22. ID3D11Texture2D* tex = nullptr;
  23. desc.Width = pImageWidth;
  24. desc.Height = pImageHeight;
  25. desc.MipLevels = 1;
  26. desc.ArraySize = 1;
  27. desc.Format = DXGI_FORMAT_R8G8B8A8_UNORM;
  28. desc.SampleDesc.Count = 1;
  29. desc.SampleDesc.Quality = 0;
  30. desc.Usage = D3D11_USAGE_DEFAULT;
  31. desc.BindFlags = D3D11_BIND_SHADER_RESOURCE;
  32. desc.CPUAccessFlags = 0;
  33. desc.MiscFlags = 0;
  34.  
  35. initData.pSysMem = ppRawData;
  36. initData.SysMemSlicePitch = pImageSize;
  37. initData.SysMemPitch = pImageWidth * 4;
  38.  
  39. if (FAILED(g_pd3dDevice->CreateTexture2D(&desc, &initData, &tex))) {
  40. free(ppRawData);
  41. return false;
  42. }
  43.  
  44. D3D11_SHADER_RESOURCE_VIEW_DESC srvDesc;
  45. ZeroMemory(&srvDesc, sizeof(srvDesc));
  46. srvDesc.Format = DXGI_FORMAT_R8G8B8A8_UNORM;
  47. srvDesc.ViewDimension = D3D11_SRV_DIMENSION_TEXTURE2D;
  48. srvDesc.Texture2D.MipLevels = desc.MipLevels;
  49. srvDesc.Texture2D.MostDetailedMip = 0;
  50. g_pd3dDevice->CreateShaderResourceView(tex, &srvDesc, (ID3D11ShaderResourceView**)&ShaderResourceView);
  51.  
  52. TextureHandle = (void*)tex;
  53. return true;
  54. }
  55.  
  56. и затем
  57. ImGui::Image((void*)(intptr_t)ShaderResourceView, ImVec2(width, heigght));
  58.  
  59. TextureHandle сохраняем для дальнейшего релиза
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement