Copie de pixels SDL_SURFACE dans un conteneur STL
-
29-10-2019 - |
Question
J'ai écrit cette fonction que je veux utiliser dans un programme, mais pour une raison quelconque, elle échoue malgré rien de mal:
std::deque <std::deque <bool> > load_image(std::string & image_name){
SDL_Surface * image = open_image(image_name);
if (!image)
exit(3);
Uint32 * pixels = (Uint32 *) image -> pixels;
std::deque <std::deque <bool> > grid(HEIGHT, std::deque <bool>(WIDTH, false));
for(int y = 0; y < std::min(image -> h, HEIGHT); y++)
for(int x = 0; x < std::min(image -> w, WIDTH); x++)
grid[y][x] = (pixels[(image -> w * y) + x] == 0);
SDL_FreeSurface(image);
return grid;
}
J'essaie simplement de copier si le pixel est noir dans le grid
. Quand je cours grid[y][x]
et (pixels[(image -> w * y) + x] == 0)
Par ailleurs, le programme fonctionne bien. Quand je fais grid[y][x] = (pixels[(image -> w * y) + x] == 0);
, le programme s'écrase quelque part au milieu de l'image.
je suis pratiquement sure (image -> w * y) + x
obtient le bon pixel, quoi qu'il arrive x
et y
sont limités, alors qu'est-ce que je ne vois pas ??
Pas de solution correcte
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow