Я намагаюсь написати гру з платформою, де спрайт для фонових рівнів розбивається на 512x512 шматки. Я зберігаю 3 шматки в пам’яті одночасно, і я намагаюся написати код, щоб виблискувати всі три на екран. Ось поточний код у мене:
SDL_Rect where;
where.y = -game->camera->y;
where.x = -game->camera->x - MAP_WIDTH;
SDL_BlitSurface(left_chunk, NULL, screen, &where);
where.x = -game->camera->x;
SDL_BlitSurface(center_chunk, NULL, screen, &where);
where.x = -game->camera->x + MAP_WIDTH;
SDL_BlitSurface(right_chunk, NULL, screen, &where);
Проблема, з якою я стикаюсь, полягає в тому, що той, хто вперше відривається, - це єдине, що з’являється. Решта не відображаються на екрані. Я думаю, що проблема може мати щось спільне з прозорістю альфа, але навіть якщо шматки зовсім не перекриваються, вони все ще не зможуть промайнути. В інших частинах коду я блискаю на екрані відразу декілька речей, наприклад символи та фони, і всі вони відображаються правильно. Цей конкретний сегмент коду є єдиною областю, з якою я стикаюся з цією проблемою.
Якщо я коментую рядок, який прошиває left_chunk, він змінюється на це: