Я новичок в программировании на DirectX и C ++, но мне нужно домашнее задание (я уже выполнил фактическое задание, но не могу заставить мой код работать после компиляции). Я вошел в свою программу и обнаружил, что проблема моя D3DXLoadSurfaceFromFile
вызов. Фактический код
//load m_Surface from file into newly created m_Surface
result = D3DXLoadSurfaceFromFile(
m_Surface,
NULL,
NULL,
m_BackgroundFile,
NULL,
D3DX_DEFAULT,
0,
NULL);
Где «результат»:
HRESULT result = m_d3ddev->CreateOffscreenPlainSurface(
SCREENW, //An int set to 640
SCREENH, //An int set to 480
D3DFMT_X8R8G8B8, //m_Surface's format
D3DPOOL_DEFAULT, //Memory pool
&m_Surface, //Pointer to m_Surface
NULL); //Reserved
m_Surface
является LPDIRECT3DSURFACE9
изначально установлен на NULL
,
m_BackgroundFile
установлен в «filename.bmp» (24-битное растровое изображение)
и (я думаю / надеюсь) все остальное говорит само за себя.
Если это помогает, прямо перед проверкой (именно эта проверка приводит к закрытию программы)
if (!SUCCEEDED(result))
return false;
результат устанавливается в S_OK, а затем -200559767
Из вашего кода я не увидел ничего плохого, но я предполагаю, что вы передали неправильный файл параметру m_BackgroundFile, либо программа не может найти файл, либо файл был в недопустимом формате.
Других решений пока нет …