if (FAILED(hr)) return hr;
if (FAILED(hr)) return hr;
// Load texture ComPtr<ID3D11Texture2D> pTexture; DirectX::TexMetadata metadata; DirectX::ScratchImage image; nd3d11 texture create from file
return hr; ID3D11Texture2D* pTexture = nullptr; ID3D11ShaderResourceView* pSRV = nullptr; HRESULT hr = CreateTextureFromFile( g_pd3dDevice, L"assets/texture.png", &pTexture, &pSRV ); 4. Method 2: Manual WIC + Direct3D (Without External Library) If you cannot use DirectXTex, you can manually decode and upload. Step 1: Initialize WIC IWICImagingFactory* pWICFactory = nullptr; CoInitializeEx(nullptr, COINIT_APARTMENTTHREADED); CoCreateInstance( CLSID_WICImagingFactory, nullptr, CLSCTX_INPROC_SERVER, IID_PPV_ARGS(&pWICFactory) ); Step 2: Load and Decode Image IWICBitmapDecoder* pDecoder = nullptr; IWICBitmapFrameDecode* pFrame = nullptr; IWICFormatConverter* pConverter = nullptr; pWICFactory->CreateDecoderFromFilename( L"image.png", nullptr, GENERIC_READ, WICDecodeMetadataCacheOnLoad, &pDecoder ); pDecoder->GetFrame(0, &pFrame); if (FAILED(hr)) return hr; if (FAILED(hr)) return hr;
// Cleanup delete[] imageData; pConverter->Release(); pFrame->Release(); pDecoder->Release(); DDS files support block compression (BC1-7), mipmaps, and cubemaps. if (FAILED(hr)) return hr