Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- bool
- CPluginViewD3D11::UploadTexture(
- char* pPluginName,
- char* pPictureName,
- void*& TextureHandle,
- void*& ShaderResourceView
- )
- {
- bool isAlpha = false;
- u32 pImageSize = 0;
- u32 pImageWidth = 0;
- u32 pImageHeight = 0;
- void* ppRawData = nullptr;
- if (!LoadImageFromFile(pPluginName, pPictureName, &ppRawData, &pImageSize, &pImageWidth, &pImageHeight, &isAlpha)) return false;
- #ifdef _DEBUG
- assert(!isAlpha);
- #endif
- D3D11_TEXTURE2D_DESC desc = {};
- D3D11_SUBRESOURCE_DATA initData = {};
- ID3D11Texture2D* tex = nullptr;
- desc.Width = pImageWidth;
- desc.Height = pImageHeight;
- desc.MipLevels = 1;
- desc.ArraySize = 1;
- desc.Format = DXGI_FORMAT_R8G8B8A8_UNORM;
- desc.SampleDesc.Count = 1;
- desc.SampleDesc.Quality = 0;
- desc.Usage = D3D11_USAGE_DEFAULT;
- desc.BindFlags = D3D11_BIND_SHADER_RESOURCE;
- desc.CPUAccessFlags = 0;
- desc.MiscFlags = 0;
- initData.pSysMem = ppRawData;
- initData.SysMemSlicePitch = pImageSize;
- initData.SysMemPitch = pImageWidth * 4;
- if (FAILED(g_pd3dDevice->CreateTexture2D(&desc, &initData, &tex))) {
- free(ppRawData);
- return false;
- }
- D3D11_SHADER_RESOURCE_VIEW_DESC srvDesc;
- ZeroMemory(&srvDesc, sizeof(srvDesc));
- srvDesc.Format = DXGI_FORMAT_R8G8B8A8_UNORM;
- srvDesc.ViewDimension = D3D11_SRV_DIMENSION_TEXTURE2D;
- srvDesc.Texture2D.MipLevels = desc.MipLevels;
- srvDesc.Texture2D.MostDetailedMip = 0;
- g_pd3dDevice->CreateShaderResourceView(tex, &srvDesc, (ID3D11ShaderResourceView**)&ShaderResourceView);
- TextureHandle = (void*)tex;
- return true;
- }
- и затем
- ImGui::Image((void*)(intptr_t)ShaderResourceView, ImVec2(width, heigght));
- TextureHandle сохраняем для дальнейшего релиза
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement