เชนแลกเปลี่ยนคืออะไร

เชนการสลับเป็นชุดของ framebuffers หรือตำแหน่งในหน่วยความจำคอมพิวเตอร์ที่ใช้ในการเรนเดอร์รูปภาพก่อนที่จะแสดงบนจอภาพจริงหรืออุปกรณ์อื่น ๆ มีอย่างน้อยสอง framebuffers ในการสลับลูกโซ่เพราะครั้งแรกหรือที่ใช้งานอยู่บัฟเฟอร์มักจะถูกระบุว่าเป็นหนึ่งในปัจจุบันที่แสดงบนจอแสดงผล ในขณะที่หนึ่ง framebuffer จะถูกแสดงบัฟเฟอร์ถัดไปสามารถแสดงผลและเตรียมความพร้อมสำหรับการแสดงผลแล้วสลับไปยังอุปกรณ์ตามความจำเป็น การใช้ swap chain สามารถขจัดปัญหาที่เกิดขึ้นเนื่องจากความขัดแย้งระหว่างฮาร์ดแวร์และซอฟต์แวร์กำหนดเวลารวมถึงส่วนกราฟิกที่สามารถปรากฏเนื่องจากการเรนเดอร์ไปยังอุปกรณ์แสดงผลโดยตรง

วิธีแสดงภาพบนจอมอนิเตอร์เป็นเพียงเรื่องของการวางลำดับตัวเลขที่ถูกต้องลงในพื้นที่หน่วยความจำที่ระบุ สิ่งที่อยู่ในพื้นที่หน่วยความจำนี้จะถูกวาดบนหน้าจอหลายครั้งทุกวินาที หน้าจอจะถูกวาดเป็นเส้นแนวนอนจากมุมบนซ้ายไปยังมุมขวาล่าง ช่วงเวลาที่หน้าจอเริ่มเฟรมถัดไปเมื่อมันเคลื่อนที่จากมุมล่างขวาของหน้าจอไปที่มุมซ้ายบนเรียกว่า retrace แนวตั้ง

การนำไปใช้งานของบัฟเฟอร์แลกเปลี่ยนเพียงวาดไปที่หน้าจอในระหว่างการย้อนแนวตั้ง หากช่วงเวลานี้ถูกปิดหรือหากโปรแกรมพยายามที่จะวาดไปที่หน้าจอในช่วงเวลาที่มีการแสดงเฟรมแล้วความผิดปกติแบบกราฟิกที่รู้จักกันเป็นน้ำตาจะปรากฏขึ้น สิ่งนี้เกิดขึ้นเมื่อรูปภาพในหน่วยความจำของอุปกรณ์แสดงผลถูกเปลี่ยนอย่างกะทันหันในระหว่างการเรนเดอร์ทำให้จอแสดงผลด้านหนึ่งแสดงเฟรมสุดท้ายและส่วนที่เหลือของหน้าจอจะแสดงขึ้นมาใหม่

ด้วยการเรนเดอร์ฉากล่วงหน้าไปยัง framebuffer เฟรมถัดไปที่จะแสดงจะถูกจัดเตรียมไว้แล้วและสามารถผลักเข้าไปในหน่วยความจำของจอแสดงผลได้อย่างรวดเร็ว ในขณะที่รูปภาพหนึ่งรูปปรากฏขึ้นภาพถัดไปจะถูกวาดลงใน framebuffer ที่ไม่ทำงานซึ่งเรียกว่าบัฟเฟอร์ด้านหลัง สิ่งนี้สร้างภาพเคลื่อนไหวที่ราบรื่นและเอฟเฟ็กต์ภาพที่สามารถตั้งเวลาได้อย่างแม่นยำเพื่อป้องกันการฉีกขาด

คำว่า "swap chain" เป็นที่รู้จักกันทั่วไปว่าเป็น double buffering หรือ triple buffering ขึ้นอยู่กับจำนวนเฟรมที่ถูกวาดไว้ล่วงหน้าของ framebuffer ที่ใช้งานอยู่ การใช้อัลกอริธึมการกำหนดเวลาเป็นมิลลิวินาทีหรือมิลลิวินาทีเป็นส่วนสำคัญของการใช้เชนการแลกเปลี่ยนเพื่อให้แน่ใจว่าอัตราเฟรมสูงสุดของจอภาพไม่เกินและโปรแกรมที่สามารถประมวลผลและทรัพยากรในระบบได้ หากใช้เชนสลับอย่างถูกต้องจะส่งผลให้แอนิเมชั่นราบรื่นโดยไม่คำนึงถึงคุณสมบัติของอุปกรณ์แสดงผลหรือระยะเวลาที่ใช้ในการเรนเดอร์เฟรมภาพเคลื่อนไหวเดียว