c++ - D3DXLoadSurfaceFromFile 导致程序过早关闭

标签 c++ directx

我是 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 传递了一个错误的文件,要么是程序找不到该文件,要么是该文件的格式 Not Acceptable 。

关于c++ - D3DXLoadSurfaceFromFile 导致程序过早关闭,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12699850/

相关文章:

c++ - C++ 中的 Extern (VS2012) 找到多个定义的符号

C++:无法通过传递给查找器函数来重新分配空初始化的对象指针

c++ - 模板和 g++ 4.7

directx - 如何快速更新动态顶点缓冲区?

c++ - SHGetFolderPath' : identifier not found

c++ - Directx 位图无法加载

c++ - 在不将前缓冲区复制回系统内存的情况下计算 gpu 前缓冲区中像素的平均值

c++ - 从奇怪的模板类型转换

c++ - 将指针复制到 aiScene

c# - (C/C++/C#) DirectX 9 Overlay,最好使用与 xfire 或 Steam 相同的方式