ฉันทำการทดสอบกับ OpenGL ES 2 และได้รับคำถามโปรแกรมปัจจุบันของฉันเป็นเช่นนั้น:
Init
-------
-> create index buffer
-> fill index buffer glBufferData …
-> create vertex buffer
-> fill vertex buffer glBufferData …
Draw
-------
1. Apply vertex buffer
-> Bind VAO
-> bind vertex buffer
- enable attributs (glVertexPointer, …)
-> unbind vertex buffer
-> Unbind VAO
-> Bind VAO
3. Apply index buffer
4. Draw
ปัญหา
รหัสขัดข้องที่ได้รับหลังจากการวิจัยบางอย่างฉันเข้าใจว่าทำไม: ฉันต้องยกเลิกการผูกบัฟเฟอร์ดัชนีของฉันในส่วน init (หลังจาก "เติมดัชนีบัฟเฟอร์ glBufferData") หรือเลิกผูกไว้ก่อน "Bind VAO" ตัวแรก
คำถามของฉันคือ:
- ฉันสามารถใส่บัฟเฟอร์ดัชนีใน VAO (บัฟเฟอร์ดัชนีหุ้น VAO ได้หรือไม่)?
- ฉันต้องยกเลิกการผูกบัฟเฟอร์หลังจากการอัพเดทแต่ละครั้ง (glBufferData) หรือไม่?
ในแอปพลิเคชันของฉันฉันมีบัฟเฟอร์ที่อัปเดตในแต่ละเฟรม (ตัวอย่าง: อนุภาค) ดังนั้นฉันจึงมีสแต็ก OpenGL ดังนี้:
-> bind buffer 1
-> update buffer 1
-> close buffer 1
-> bind buffer 1
-> draw
3 บรรทัดแรกอัปเดตบัฟเฟอร์ Vertex ซึ่งเป็นวัตถุวาดล่าสุดที่ควรเป็นดังนี้:
-> bind buffer 1
-> update buffer 1
-> draw
ขอบคุณ