คำถามติดแท็ก vertex-buffer-object

2
GL_STATIC_DRAW กับ GL_DYNAMIC_DRAW เทียบกับ GL_STREAM_DRAW: มันมีความสำคัญหรือไม่
ใน 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 กราฟิคบาง ๆ ไว้เพื่อใช้เป็น …

2
บัฟเฟอร์ดัชนีคืออะไรและเกี่ยวข้องกับบัฟเฟอร์จุดสุดยอดอย่างไร
ฉันมีบัฟเฟอร์จุดสุดยอดเช่นนี้ 0.0, 0.0, 1.0, 0.0, 0.0, 0.6, 1.0, 0.6, 0.5, 1.0 ฉันมีบัฟเฟอร์ดัชนีต่อไปนี้: 0, 2, 2, 4, 4, 3, 3, 2, 2, 1, 1, 0, 0, 3, 3, 1 ฉันรู้ว่าฉันต้องการวาดgl.LINESโดยใช้ WebGL หมายถึงหลายส่วนของบรรทัดที่คั่น gl.drawElements(gl.LINES, 16, gl.UNSIGNED_SHORT, indexBuffer); ดูเหมือนว่าจะเปิดใช้งานการวาดภาพของส่วนของเส้นหลาย ๆ อันในการเรียกใช้การดึงครั้งเดียวใน WebGL ใครบางคนสามารถ ELI5 ให้ฉันสิ่งที่บัฟเฟอร์ดัชนีและวิธีการที่เกี่ยวข้องกับจุดสุดยอดบัฟเฟอร์? จะสร้างบัฟเฟอร์ดัชนีจากพื้นฐานได้อย่างไร

3
เหตุใด Vertex Buffer Objects จึงปรับปรุงประสิทธิภาพ
จากความเข้าใจพื้นฐานของฉัน Vertex Buffer Object ทำงานได้ดังนี้ (รหัสหลอก): โดยปกติถ้าใครอยากพูดให้วาดสี่เหลี่ยมจัตุรัสหนึ่งสามารถออกคำสั่งการวาดเส้น line (0, 0) -> (1, 0) line (1, 0) -> (1, 1) line (1, 1) -> (0, 1) line (0, 1) -> (0, 0) การใช้ VBO ถ้าฉันเข้าใจถูกต้องจะโหลดจุดยอดลงใน VBO define VBO load (0,0) -> VBO load (1,0) -> VBO load (1,1) -> VBO load …
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.