ฉันมีปัญหาในการแยกแยะความแตกต่างระหว่างการโทรglFlush()และglFinish().
เอกสารกล่าวว่าglFlush()และglFinish()จะผลักดันการดำเนินการที่บัฟเฟอร์ทั้งหมดไปยัง OpenGL เพื่อให้มั่นใจได้ว่าจะถูกดำเนินการทั้งหมดความแตกต่างจะglFlush()ส่งกลับทันทีที่glFinish()บล็อกจนกว่าการดำเนินการทั้งหมดจะเสร็จสมบูรณ์
เมื่ออ่านคำจำกัดความแล้วฉันคิดว่าถ้าฉันจะใช้glFlush()ฉันอาจประสบปัญหาในการส่งการดำเนินการไปยัง OpenGL มากกว่าที่จะดำเนินการได้ ดังนั้นเพื่อที่จะลองฉันสลับglFinish()a glFlush()และแท้จริงของฉันและดูเถิดโปรแกรมของฉันทำงาน (เท่าที่ฉันสามารถบอกได้) เหมือนกันทุกประการ อัตราเฟรมการใช้ทรัพยากรทุกอย่างเหมือนเดิม
ดังนั้นฉันจึงสงสัยว่าการโทรทั้งสองสายมีความแตกต่างกันมากหรือไม่หรือถ้ารหัสของฉันทำให้การโทรไม่แตกต่างกัน หรือควรใช้ที่ไหนเทียบกับอีกอัน ฉันยังคิดว่า OpenGL จะมีการโทรบางอย่างต้องการglIsDone()ตรวจสอบว่าคำสั่งบัฟเฟอร์ทั้งหมดสำหรับ a glFlush()นั้นสมบูรณ์หรือไม่ (ดังนั้นจึงไม่ส่งการดำเนินการไปยัง OpenGL เร็วกว่าที่สามารถเรียกใช้งานได้) แต่ฉันไม่พบฟังก์ชันดังกล่าว .
รหัสของฉันคือลูปเกมทั่วไป:
while (running) {
process_stuff();
render_stuff();
}
