Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> การเขียนโปรแกรม C

วิธี A-Buffer ใน C / C ++?


เทคนิค A-Buffer ในคอมพิวเตอร์กราฟิกเป็นกลไกการตรวจจับใบหน้าแบบซ่อนธรรมดาที่ใช้กับคอมพิวเตอร์หน่วยความจำเสมือนขนาดกลาง เทคนิคนี้เรียกอีกอย่างว่า anti-aliased หรือ area-averaged หรือ accumulation buffer เทคนิคนี้ขยายอัลกอริทึมของเทคนิค Depth-buffer (หรือ Z Buffer) เนื่องจากเทคนิคบัฟเฟอร์เชิงลึกสามารถใช้ได้กับวัตถุทึบแสงเท่านั้น แต่ไม่สามารถใช้กับวัตถุโปร่งใส เทคนิคบัฟเฟอร์ A จึงมีประโยชน์ในสถานการณ์นี้ แม้ว่าเทคนิคบัฟเฟอร์ A ต้องใช้หน่วยความจำมากกว่า แต่สีพื้นผิวที่แตกต่างกันสามารถประกอบขึ้นได้อย่างถูกต้อง เนื่องจากเป็นบรรพบุรุษของอัลกอริธึม Z-buffer แต่ละตำแหน่งในบัฟเฟอร์สามารถระบุตำแหน่งหรืออ้างอิงรายการพื้นผิวที่เชื่อมโยง โครงสร้างข้อมูลหลักในบัฟเฟอร์ A จะถือเป็นบัฟเฟอร์สะสม

แต่ละตำแหน่งในบัฟเฟอร์ A มี 2 ฟิลด์ -

  • ฟิลด์ความเข้มหรือฟิลด์ข้อมูลพื้นผิว

  • ช่องความลึก

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

หากค่าความลึก>=0 ตัวเลขที่เก็บอยู่ที่ตำแหน่งนั้นเป็นความลึกของพื้นผิวด้านเดียวที่ทับซ้อนกับพื้นที่พิกเซลที่เกี่ยวข้อง ช่องที่สอง กล่าวคือ ช่องความเข้มจะจัดเก็บองค์ประกอบ RGB ของสีพื้นผิวที่จุดนั้นและเปอร์เซ็นต์ของการครอบคลุมพิกเซล

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

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

บัฟเฟอร์พื้นผิวในวิธีบัฟเฟอร์ A ประกอบด้วย −

  • ตัวระบุพื้นผิว

  • ความลึก

  • เปอร์เซ็นต์ของพื้นที่ครอบคลุม

  • พารามิเตอร์ความทึบ

  • ชี้ไปที่พื้นผิวถัดไป

  • ส่วนประกอบความเข้ม RGB

ข้อดีอีกประการของเทคนิคบัฟเฟอร์ A คือมีการป้องกันรอยหยักเพิ่มเติมจากการทำงานของบัฟเฟอร์ Z