Copia di pixel SDL_SURFACE in un contenitore STL
-
29-10-2019 - |
Domanda
Ho scritto questa funzione che voglio usare in un programma, ma per qualche ragione, non è nonostante non vada nulla:
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;
}
Sto semplicemente cercando di copiare se il pixel è nero nel grid
. Quando corro grid[y][x]
e (pixels[(image -> w * y) + x] == 0)
Separatamente, il programma funziona bene. Quando io faccio grid[y][x] = (pixels[(image -> w * y) + x] == 0);
, il programma si blocca da qualche parte nel mezzo dell'immagine.
sono abbastanza sicuro (image -> w * y) + x
ottiene il pixel corretto, non importa cosa x
e y
sono limitati a, quindi cosa non vedo ??
Nessuna soluzione corretta
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow