Copiar píxeles SDL_SURFACE en un contenedor STL
-
29-10-2019 - |
Pregunta
Escribí esta función que quiero usar en un programa, pero por alguna razón, falla a pesar de que nada va 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;
}
Simplemente estoy tratando de copiar si el píxel es negro en el grid
. Cuando corro grid[y][x]
y (pixels[(image -> w * y) + x] == 0)
Por separado, el programa funciona bien. Cuando lo hago grid[y][x] = (pixels[(image -> w * y) + x] == 0);
, el programa se bloquea en algún lugar en el medio de la imagen.
Estoy bastante seguro (image -> w * y) + x
obtiene el píxel correcto, pase lo que pase x
y y
se limitan a, entonces, ¿qué no estoy viendo?
No hay solución correcta
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow