Direct2D LoadBitmap
-
Hallo,
ich versuche mit Direct2D nach der Anleitung von MSDN eine Bitmap-Datei zu laden.
http://msdn.microsoft.com/en-us/library/windows/desktop/dd756685(v=vs.85).aspx
Leider gibt mir die Funktion 'CreateDecoderFromStream(...)' (ganz unten) als HRESULT 0x88982f50 und die ganze Funktion 'LoadResourceBitmap' bricht ab. Hat jemand eine Idee, was da schieflaufen könnte? Ich hab die Funktion genauso von MSDN übernommen.HRESULT DemoApp::LoadResourceBitmap( ID2D1RenderTarget *pRenderTarget, IWICImagingFactory *pIWICFactory, PCWSTR resourceName, PCWSTR resourceType, UINT destinationWidth, UINT destinationHeight, ID2D1Bitmap **ppBitmap ) { IWICBitmapDecoder *pDecoder = NULL; IWICBitmapFrameDecode *pSource = NULL; IWICStream *pStream = NULL; IWICFormatConverter *pConverter = NULL; IWICBitmapScaler *pScaler = NULL; HRSRC imageResHandle = NULL; HGLOBAL imageResDataHandle = NULL; void *pImageFile = NULL; DWORD imageFileSize = 0; // Locate the resource. imageResHandle = FindResourceW(HINST_THISCOMPONENT, resourceName, resourceType); HRESULT hr = imageResHandle ? S_OK : E_FAIL; if (SUCCEEDED(hr)) { // Load the resource. imageResDataHandle = LoadResource(HINST_THISCOMPONENT, imageResHandle); hr = imageResDataHandle ? S_OK : E_FAIL; } if (SUCCEEDED(hr)) { // Lock it to get a system memory pointer. pImageFile = LockResource(imageResDataHandle); hr = pImageFile ? S_OK : E_FAIL; } if (SUCCEEDED(hr)) { // Calculate the size. imageFileSize = SizeofResource(HINST_THISCOMPONENT, imageResHandle); hr = imageFileSize ? S_OK : E_FAIL; } if (SUCCEEDED(hr)) { // Create a WIC stream to map onto the memory. hr = pIWICFactory->CreateStream(&pStream); } if (SUCCEEDED(hr)) { // Initialize the stream with the memory pointer and size. hr = pStream->InitializeFromMemory( reinterpret_cast<BYTE*>(pImageFile), imageFileSize ); } if (SUCCEEDED(hr)) { // Create a decoder for the stream. hr = pIWICFactory->CreateDecoderFromStream( pStream, NULL, WICDecodeMetadataCacheOnLoad, &pDecoder ); } if (SUCCEEDED(hr)) //Ab hier geht's nicht weiter. { [...]
-
Ich kann dir nichts zum Problem an sich sagen, aber Frage mich warum du ausgerechnet in Direct2D programmieren willst? Hat das einen Grund?
Ansonsten würde ich dir SFML oder SDL empfehlen. Das ist um einiges einfacher und am Ende sogar plattformunabhängig.