SDL_SURFACEピクセルをSTLコンテナにコピーします
-
29-10-2019 - |
質問
私はプログラムで使用したいこの機能を書きましたが、何らかの理由で、何も間違っていないにもかかわらず失敗します。
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
制限されているので、私は何を見ていませんか?
正しい解決策はありません
所属していません StackOverflow