2

我有一个函数可以将 SDL_Surface 获取到 openGL 纹理,但我似乎无法从 dll 加载图像。我可以加载一个 DLL,我只是对如何从中获取图像并从中创建 SDL 表面感到困惑。

4

1 回答 1

1

在 Windows 上,可以获得指向 DLL 中资源的原始指针。FindResource/LoadResource/LockResource 函数完成这项工作。

使用以下代码获取指向资源 ResourceID 的指针(在 .rc 文件中查找它)和 ResourceType 类型(在您的情况下为 BITMAP):

HMODULE Handle = /// GetModuleHandle( NULL or .dll handle here);  - for current .exe file or .dll

HRSRC hResInfo;
HGLOBAL hResource;

// first find the resource info block
if ( ( hResInfo = ::FindResource( Handle, MAKEINTRESOURCE(ResourceID), ResourceType ) ) == NULL )
{
    return( NULL );
}

// determine resource size
int BufSize = SizeofResource( Handle, hResInfo );

// now get a handle to the resource
if ( ( hResource = LoadResource( Handle, hResInfo ) ) == NULL )
{
    return( NULL );
}

// finally get and return a pointer to the resource
void* BufPtr = LockResource( hResource );

    /// Do whatever you need with BufSize/BufPtr
于 2012-06-03T06:21:32.637 回答