MCPcopy Create free account
hub / github.com/Aegel5/SimpleSwitcher / LoadTexture_RGBA8

Function LoadTexture_RGBA8

imgui_tiny_app/Backends_Win.h:269–306  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

267 }
268
269 inline ImTextureID LoadTexture_RGBA8(unsigned char* image_data, int image_width, int image_height) {
270
271 // Create texture
272 D3D11_TEXTURE2D_DESC desc;
273 ZeroMemory(&desc, sizeof(desc));
274 desc.Width = image_width;
275 desc.Height = image_height;
276 desc.MipLevels = 1;
277 desc.ArraySize = 1;
278 desc.Format = DXGI_FORMAT_R8G8B8A8_UNORM;
279 desc.SampleDesc.Count = 1;
280 desc.Usage = D3D11_USAGE_DEFAULT;
281 desc.BindFlags = D3D11_BIND_SHADER_RESOURCE;
282 desc.CPUAccessFlags = 0;
283
284 ID3D11Texture2D* pTexture = NULL;
285 D3D11_SUBRESOURCE_DATA subResource;
286 subResource.pSysMem = image_data;
287 subResource.SysMemPitch = desc.Width * 4;
288 subResource.SysMemSlicePitch = 0;
289 g_pd3dDevice->CreateTexture2D(&desc, &subResource, &pTexture);
290
291 if (!pTexture)
292 return 0;
293
294 // Create texture view
295 D3D11_SHADER_RESOURCE_VIEW_DESC srvDesc;
296 ZeroMemory(&srvDesc, sizeof(srvDesc));
297 srvDesc.Format = DXGI_FORMAT_R8G8B8A8_UNORM;
298 srvDesc.ViewDimension = D3D11_SRV_DIMENSION_TEXTURE2D;
299 srvDesc.Texture2D.MipLevels = desc.MipLevels;
300 srvDesc.Texture2D.MostDetailedMip = 0;
301 ID3D11ShaderResourceView* res = 0;
302 g_pd3dDevice->CreateShaderResourceView(pTexture, &srvDesc, &res);
303 pTexture->Release();
304
305 return (ImTextureID)(void*)res;
306 }
307
308 inline void CleanupTexture(ImTextureID t) {
309 ((ID3D11ShaderResourceView*)(void*)t)->Release();

Callers 1

ImageToShaderConsumeFunction · 0.85

Calls

no outgoing calls

Tested by

no test coverage detected