การคำนวณยอดต่อยอดใน OpenGL Tesselation


9

ฉันพยายามใช้การจำลองผ้าตามตำแหน่งโดยใช้การจัดการฮาร์ดแวร์ ซึ่งหมายความว่าฉันต้องการอัปโหลดรูปสี่เหลี่ยมควบคุมไปยังการ์ดกราฟิกจากนั้นใช้ tesselation และ geometry shading เพื่อสร้างโหนดในผ้า

ความคิดนี้ตามหลังกระดาษ:

Huynh, David "การจำลองผ้าโดยใช้ tessellation ฮาร์ดแวร์" (2011) วิทยานิพนธ์. สถาบันเทคโนโลยีโรเชสเตอร์ http://scholarworks.rit.edu/theses/265/

ฉันรู้วิธีการใช้ tesselation เพื่อสร้างจุดจำลอง สิ่งที่ฉันไม่รู้ก็คือวิธีเก็บข้อมูลที่คำนวณไว้ใน framebuffer

รูปทรงเรขาคณิตและการประเมินค่า tesselation มีข้อมูลที่จำเป็นสำหรับการคำนวณต่อยอด แต่พวกเขาสามารถเขียนลงใน framebuffer โดยตรงได้หรือไม่

ส่วนที่ฉันรู้สามารถเขียนไปที่ framebuffer แต่ข้อมูลของฉันจะถูกแก้ไขและฉันจะไม่รู้ว่าจะเขียนตำแหน่งใดอีก


เปลี่ยนความคิดเห็นบัฟเฟอร์
วงล้อประหลาด

ฟังดูดีมาก ข้อ จำกัด ของการจำลองผ้าทำให้ฉันจำเป็นต้องเข้าถึงเพื่อนบ้านทั้งหมดของอนุภาค (เพื่อคำนวณแรงสปริง) สิ่งนี้สามารถทำได้กับบัฟเฟอร์ดังกล่าวหรือไม่? ในรูปทรงเรขาคณิตอาจ? เพื่อเร่งบัฟเฟอร์คำติชมเพื่อพิมพ์แต่ละจุดสุดยอดหลาย ๆ ครั้งฉันต้องการใช้ GL_POINTS หลังจากดูครั้งแรกดูเหมือนว่ามันทำให้การคำนวณสปริงยากขึ้น
Dragonseel

คำตอบ:


3

จากความคิดเห็นของ "ratchet freak" ฉันค้นคว้า Transform Feedback Buffers และแก้ไขปัญหาของฉันในแบบนั้น

ตอนนี้ฉันสร้างคะแนนจำลองบนซีพียูและใส่ลงใน VertexBufferObject ฉันสร้าง VBO ตัวที่สองสำหรับคะแนน (รวมถึงบางส่วนสำหรับความเร็ว) การเชื่อมต่อของผ้าจะได้รับเป็นคุณลักษณะจุดสุดยอดใน ivec4

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

การคำนวณจะทำในจุดสุดยอด - shader เป็น GL_POINTS ผูกเอาท์พุทของ shader แรกเข้ากับ shader ปกติอื่นโดยใช้ index-buffer เพิ่มเติมเพื่อสร้างรูปสามเหลี่ยมที่ฉันสามารถทำได้โดยไม่มีปัญหาทำให้ผ้าในแบบที่ฉันต้องการ

แนวคิดนี้เป็นไปตามตัวอย่างบัฟเฟอร์เปลี่ยนความคิดเห็นที่เกิดขึ้นในหนังสือ "OpenGL Superbible" http://www.openglsuperbible.com/

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.