กลับไปหน้าบทความ

อ่าน 1 นาที

วัตถุเฟรมบัฟเฟอร์

OpenGL/ลิงก์ย้อนกลับเทมเพลต Webarchive

เฟรมบัฟเฟอร์ออบเจ็กต์ (FBO) เป็นส่วนขยายของOpenGLสำหรับการเรนเดอร์ภาพไปยังบัฟเฟอร์นอกหน้าจอ อย่างยืดหยุ่น รวมถึงการเรนเดอร์ไปยังบัฟเฟอร์พื้นผิว สามารถใช้ในการใช้งาน ฟิลเตอร์ภาพและ.

วัตถุเฟรมบัฟเฟอร์

เฟรมบัฟเฟอร์ออบเจ็กต์ (FBO) เป็นส่วนขยายของOpenGLสำหรับการเรนเดอร์ภาพไปยังบัฟเฟอร์นอกหน้าจอ อย่างยืดหยุ่น รวมถึงการเรนเดอร์ไปยังบัฟเฟอร์พื้นผิว สามารถใช้ในการใช้งาน ฟิลเตอร์ภาพและ เอฟเฟ็กต์ การประมวลผลภาพหลังการ เรนเดอร์ ได้หลากหลายโดยการเรนเดอร์ภาพไปยังบัฟเฟอร์นอกหน้าจอก่อน จากนั้นจึงใช้เอฟเฟ็กต์ต่างๆ แล้วจึงส่งไปยังบัฟเฟอร์บนหน้าจอ

FBO (Finite Frame Observable) ถูกนำมาใช้ใน OpenGL เนื่องจากมีประสิทธิภาพและใช้งานง่าย การใช้ FBO ไม่ประสบปัญหาเรื่องโอเวอร์เฮดที่เกี่ยวข้องกับการสลับบริบท การวาดภาพใน OpenGL และได้เข้ามาแทนที่pbufferและวิธีการอื่นๆ ที่ใช้การสลับบริบทไป แล้วเป็นส่วนใหญ่

FBO นั้นคล้ายคลึงกับโมเดลrender targetsในDirectX

การใช้งาน

FBO มีการใช้งานหลักสองอย่าง ได้แก่ การประมวลผลภาพที่เรนเดอร์แล้ว และการจัดองค์ประกอบภาพระหว่างฉากต่างๆ ตัวอย่างเช่น:

  1. ภาพที่เรนเดอร์แล้วจะถูกจับภาพและนำไปใช้กับเชเดอร์แบบแฟรกเมนต์หรือการปรับแต่งอื่นๆ ซึ่งช่วยให้สามารถสร้างเอฟเฟ็กต์กราฟิกคอมพิวเตอร์ยอดนิยมในปัจจุบันได้มากมาย รวมถึงการเพิ่มเอฟเฟ็กต์เบลอหรือเอฟเฟ็กต์แสงฟุ้ง
  2. สามารถใช้สร้างมุมมองของฉากอื่นๆ ได้ เช่น โทรทัศน์ในบ้านที่แสดงภาพจากกล้องตัวที่สอง สามารถเรนเดอร์ฉากผ่าน FBO ไปยังพื้นผิว (texture) จากนั้นจึงนำพื้นผิวนั้นไปใช้กับพื้นผิวของโทรทัศน์ บางครั้งเรียกวิธีการนี้ว่า "เรนเดอร์ไปยังพื้นผิว" หรือ RTT (Render to Texture)

ข้อดีเหนือกว่าวิธีการอื่นๆ

วิธีการที่เกี่ยวข้องกับ FBO ถือว่าเหนือกว่าเนื่องจาก:

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

สถาปัตยกรรม

ในการใช้ FBO นั้น เพียงแค่สร้างอินสแตนซ์ของมันขึ้นมาเท่านั้น FBO จะมาพร้อมกับส่วนแนบหลายส่วน จากนั้นเราสามารถแนบส่วนแนบเหล่านี้เข้ากับตัวรับที่เลือกได้ ไม่ว่าจะเป็นพื้นผิวหรือบัฟเฟอร์การเรนเดอร์ FBO สามารถเปิดเผยจุดแนบสีได้หลายจุด (GL_COLOR_ATTACHMENT0 ขึ้นไป) และโดยปกติแอปพลิเคชันจะตรวจสอบว่าชุดส่วนแนบที่เลือกนั้นสมบูรณ์ในเฟรมบัฟเฟอร์ก่อนที่จะเรนเดอร์ไปยังเฟรมบัฟเฟอร์นั้น[ 1 ]

ตัวอย่างเช่น:

  • สร้าง FBO และผูกเข้ากับระบบ
  • แนบบัฟเฟอร์สี (ไม่ว่าจะเป็นในรูปแบบ RenderBuffer หรือ texture) เข้ากับ FBO
  • แนบบัฟเฟอร์ความลึก (ไม่ว่าจะเป็นในรูปแบบ RenderBuffer หรือ texture) เข้ากับ FBO
  • ผูกเฟรมบัฟเฟอร์ของหน้าต่างดั้งเดิม (id=0)
  • แสดงพื้นผิวบนหน้าจอด้วยพิกเซลเชเดอร์ โดยขึ้นอยู่กับทั้งข้อมูลสีและข้อมูลความลึก
  • วัตถุเฟรมบัฟเฟอร์ในวิกิ OpenGL
  • เอกสารทางเทคนิคเกี่ยวกับ Framebuffer object เก็บถาวรเมื่อวันที่ 2 พฤษภาคม 2013 ที่Wayback Machine
  • การอ้างอิงวัตถุเฟรมบัฟเฟอร์ที่ OpenVidia
  • ตัวอย่างโค้ดสำหรับ Windows และ Linux
  • EXT Framebuffer (opengl.org)
ดึงข้อมูลมาจาก " https://en.wikipedia.org/w/index.php?title=Framebuffer_object&oldid=1358758516 "

สรุปเนื้อหา

ข้อมูลสำคัญจากบทความ

ข้อมูลสำคัญเกี่ยวกับ วัตถุเฟรมบัฟเฟอร์

เฟรมบัฟเฟอร์ออบเจ็กต์ (FBO) เป็นส่วนขยายของOpenGLสำหรับการเรนเดอร์ภาพไปยังบัฟเฟอร์นอกหน้าจอ อย่างยืดหยุ่น รวมถึงการเรนเดอร์ไปยังบัฟเฟอร์พื้นผิว สามารถใช้ในการใช้งาน ฟิลเตอร์ภาพและ.

การใช้งาน

FBO มีการใช้งานหลักสองอย่าง ได้แก่ การประมวลผลภาพที่เรนเดอร์แล้ว และการจัดองค์ประกอบภาพระหว่างฉากต่างๆ ตัวอย่างเช่น:

ข้อดีเหนือกว่าวิธีการอื่นๆ

วิธีการที่เกี่ยวข้องกับ FBO ถือว่าเหนือกว่าเนื่องจาก:

สถาปัตยกรรม

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