我有一个简单的问题。我在我的 C++ 程序中使用 SDL 和 SDL_image,并且可以从单个 png 文件加载图像。
SDL_Surface *dot = NULL;
dot = load_image("dot.png");
但是如果我将png文件添加到资源中,如何加载它呢?所以我不想存储在exe旁边的png文件中。是否可以从资源中加载?
尝试过
dot = load_image(MAKEINTRESOURCE(IDB_PNG1));
但是没有成功。
最佳答案
完全可以从 Windows 资源将图像或其他内容加载到 SDL 中。为此,您需要获取原始数据并将其传递给适当的 RWOPS。
HMODULE hModule = GetModuleHandle(_T("myapp.exe"));
HRSRC hWhite = FindResource(hModule, MAKEINTRESOURCE(IDB_WHITE_PNG), _T("PNG"));
unsigned int white_size = SizeofResource(hModule, hWhite);
HGLOBAL hgWhite = LoadResource(hModule, hWhite);
unsigned char* white_data = (unsigned char*)LockResource(hgWhite);
SDL_Surface* white = IMG_Load_RW(SDL_RWFromConstMem(white_data, white_size), 1);
这假设您的 *.rc 文件中有类似的内容:
IDB_WHITE_PNG PNG "White.png"
关于c++ - SDL 和 Visual Studio 2010 资源,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11364095/