OpenGL® VBO คืออะไร?

เมื่อใช้ไลบรารีกราฟิกคอมพิวเตอร์ Open Graphics Library (OpenGL®) สำหรับการเขียนโปรแกรมคอมพิวเตอร์ vertex buffer object (VBO) เป็นโครงสร้างข้อมูลที่อนุญาตให้สร้างและจัดเก็บวัตถุสามมิติ (3D) ในหน่วยความจำของกราฟิก การ์ดหรือฮาร์ดแวร์กราฟิก สิ่งนี้ทำให้OpenGL® VBO สามารถแสดงผลได้อย่างรวดเร็วและใช้ทรัพยากรระบบน้อยกว่าเทคนิคอื่น ๆ ที่ใช้การวาดโหมดทันที นอกเหนือจากความเร็วที่เพิ่มขึ้นและค่าใช้จ่ายด้านกราฟิกที่ลดลงOpenGL® VBO ยังเป็นโครงสร้างข้อมูลแบบไดนามิกซึ่งแตกต่างจากรายการแสดงผล OpenGL ที่สามารถเปลี่ยนแปลงได้เมื่ออยู่ในหน่วยความจำ แนวคิดของOpenGL® VBO เริ่มต้นจากผู้ผลิตฮาร์ดแวร์ซึ่งเดิมรวมอยู่ในชื่อต่าง ๆ ซึ่งเป็นฟังก์ชันการทำงานที่คล้ายกันซึ่งเป็นส่วนขยายของไลบรารีOpenGL®ซึ่งต่อมาได้รับการรับรองมาตรฐานโดยOpenGL® Architecture Review Board (ARB)

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

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

เมื่อOpenGL® VBO ถูกเรนเดอร์ในที่สุดระยะทางจากหน่วยความจำกราฟิกที่เก็บไว้และหน่วยประมวลผลกราฟิก (GPU) มีขนาดเล็กมากทำให้การแรสเตอร์รวดเร็วมากโดยไม่จำเป็นต้องเลื่อนผ่านฮาร์ดแวร์ระบบที่ช้ากว่าก่อน อย่างไรก็ตามในบางกรณีการใช้งาน VBOs นั้นไม่ได้รับการรองรับจากฮาร์ดแวร์การ์ดกราฟิก สิ่งนี้สามารถนำไปสู่ปัญหาการเขียนโปรแกรมที่ลบสิทธิประโยชน์เพิ่มเติมใด ๆ จากการใช้ VBO หรือโปรแกรมที่จะเข้ากันไม่ได้กับการ์ดกราฟิกบางตัว

มีวิธีการบางอย่างที่สามารถช่วยในการปรับแต่งวิธีการใช้งานOpenGL® VBO เมื่อใช้งาน หนึ่งในนั้นคือการให้คำแนะนำเกี่ยวกับกราฟิกการ์ดหรือOpenGL®เพื่อช่วยกำหนดตำแหน่งที่ VBO ควรอยู่ในหน่วยความจำ ขึ้นอยู่กับคำแนะนำที่ให้ไว้ VBO สามารถจัดเก็บโดยตรงในหน่วยความจำกราฟิกบนการ์ดกราฟิกหรืออาจถูกเก็บไว้ในหน่วยความจำเข้าถึงโดยสุ่ม (RAM) หลักของระบบหากจำเป็น