Я написал эту функцию, которую хочу использовать в программе, но по какой-то причине она не работает, несмотря на то, что ничего не происходит неправильно:
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;
}
Я просто пытаюсь скопировать, является ли пиксельчерный в grid
.Когда я запускаю grid[y][x]
и (pixels[(image -> w * y) + x] == 0)
отдельно, программа работает нормально.Когда я делаю grid[y][x] = (pixels[(image -> w * y) + x] == 0);
, программа падает где-то посередине изображения.
Я уверен, что (image -> w * y) + x
получает правильный пиксель, независимо от того, чем ограничены x
и y
, так что я не вижу ??