我有一个函数可以将 SDL_Surface 获取到 openGL 纹理,但我似乎无法从 dll 加载图像。我可以加载一个 DLL,我只是对如何从中获取图像并从中创建 SDL 表面感到困惑。
问问题
179 次
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 回答