ใน OpenGL นั้นฟังก์ชั่นบัฟเฟอร์วัตถุ ( glBufferData
, glBufferSubData
และอาจมีอีกสองสามคน) มีพารามิเตอร์usage
อธิบายโดยเอกสารเป็นคำใบ้ของการใช้งานที่ตั้งใจอาจหมายถึงการช่วยให้การใช้งานมีประสิทธิภาพดีขึ้น
การใช้
ระบุรูปแบบการใช้งานที่คาดหวังของแหล่งข้อมูล คงต้องเป็นสัญลักษณ์
GL_STREAM_DRAW
,GL_STREAM_READ
,GL_STREAM_COPY
,GL_STATIC_DRAW
,GL_STATIC_READ
,GL_STATIC_COPY
,GL_DYNAMIC_DRAW
, หรือGL_DYNAMIC_READ
การใช้ [... ] เป็นคำแนะนำในการนำ GL ไปใช้เพื่อให้สามารถเข้าถึงแหล่งเก็บข้อมูลของวัตถุบัฟเฟอร์ได้อย่างไร สิ่งนี้ช่วยให้การนำ GL ไปใช้ในการตัดสินใจอย่างชาญฉลาดยิ่งขึ้นซึ่งอาจส่งผลกระทบต่อประสิทธิภาพของวัตถุบัฟเฟอร์อย่างมาก อย่างไรก็ตามไม่ได้ จำกัด การใช้งานจริงของแหล่งข้อมูลGL_DYNAMIC_COPY
wikiนั้นคลุมเครือในทำนองเดียวกัน:
นี่เป็นเพียงคำใบ้เท่านั้น เป็นรหัส OpenGL ที่ถูกกฎหมายอย่างสมบูรณ์ในการปรับเปลี่ยนบัฟเฟอร์ STATIC หลังจากสร้างขึ้นหรือไม่เคยแก้ไขบัฟเฟอร์ STREAM
[... ]
เหล่านี้เป็นคำถามที่สามารถตอบได้ด้วยการทำโปรไฟล์อย่างระมัดระวัง และถึงแม้ว่าคำตอบนั้นจะถูกต้องสำหรับไดรเวอร์รุ่นนั้นโดยเฉพาะจากผู้จำหน่ายฮาร์ดแวร์รายนั้น
ถ้าอย่างนั้นพารามิเตอร์นี้มีความเกี่ยวข้องกันอย่างไร? ผู้ขับขี่ต้องคำนึงถึงเรื่องนี้จริงหรือไม่และถ้าเป็นเช่นนั้นในประสบการณ์ของคุณจะมีผลกระทบกับการปฏิบัติจริงหรือไม่? คุณมีข้อมูลที่จะแบ่งปันหรือไม่?
ฉันได้เขียนเลเยอร์ abstraction API กราฟิคบาง ๆ ไว้เพื่อใช้เป็น API อย่างใดอย่างหนึ่งที่มีอยู่แล้วและมันก็เป็นการล่อลวงที่จะไม่สนใจพารามิเตอร์นี้เลยและซ่อนมันจากสิ่งที่เป็นนามธรรม