在sdl2中获取PNG imgae的RGBA值

时间:2018-03-26 04:20:10

标签: c++11 sdl-2

我需要RGBA值的图像来生成我的地形高度,我使用sdl作为加载图像我环顾四周,发现SDL_GetRGBA应该返回这些值,但每次运行此代码我的程序崩溃...

SDL_Surface *image = IMG_Load(HightMapAddress);
SDL_LockSurface(image);
Uint32 *pixels = (Uint32 *)image->pixels;
Uint8* RED;
Uint8* GREEN;
Uint8* BLUE;
Uint8* ALPHA;
SDL_GetRGBA(pixels[0], image->format, RED, GREEN, BLUE, ALPHA);

1 个答案:

答案 0 :(得分:1)

SDL_GetRGBA获取指向内存的指针,它应该写出结果颜色。您传递了未初始化的指针,因此所述函数将尝试写入未知位置。幸运的是它会崩溃,否则你会在内存中踩到一些随机位置。

正确的代码就像是

Uint8 RED;
Uint8 GREEN;
Uint8 BLUE;
Uint8 ALPHA;
SDL_GetRGBA(pixels[0], image->format, &RED, &GREEN, &BLUE, &ALPHA);