ฉันพยายามเขียนเกม platforming ที่ sprite สำหรับพื้นหลังเลเวลถูกแบ่งออกเป็นชิ้นขนาด 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);
ปัญหาที่ฉันพบคือสิ่งใดก็ตามที่ถูกทำให้เป็นก้อนเป็นครั้งแรกเป็นสิ่งเดียวที่ปรากฏขึ้น ที่เหลือไม่ปรากฏบนหน้าจอ ฉันคิดว่าปัญหาอาจมีบางอย่างที่เกี่ยวข้องกับความโปร่งใสอัลฟ่า แต่แม้ว่าชิ้นส่วนจะไม่ทับซ้อนกันพวกเขาก็ยังคงล้มเหลว ในส่วนอื่น ๆ ของรหัสฉันจะทำหลายอย่างพร้อมกันบนหน้าจอในเวลาเดียวกันเช่นตัวละครและพื้นหลังและสิ่งเหล่านั้นจะปรากฏขึ้นอย่างถูกต้อง ส่วนของรหัสนี้เป็นพื้นที่เดียวที่ฉันพบปัญหานี้
หากฉันใส่ความคิดเห็นในบรรทัดที่ blits left_chunk มันจะเปลี่ยนเป็น: