3
ใช้เวลานานแค่ไหนสำหรับ OpenGL ในการอัพเดทหน้าจอจริง?
ฉันมีแอปทดสอบ OpenGL แบบง่าย ๆ ใน C ซึ่งดึงดูดสิ่งต่าง ๆ เพื่อตอบสนองต่อการป้อนข้อมูลสำคัญ (Mesa 8.0.4, ลองกับ Mesa-EGL และกับ GLFW, Ubuntu 12.04LTS บนพีซีที่ใช้ NVIDIA GTX650) การดึงค่อนข้างง่าย / เร็ว (หมุนประเภทของสิ่งของ) รหัสการทดสอบของฉันไม่ได้ จำกัด จำนวนการจงใจอย่างรอบคอบ แต่อย่างใดมันมีลักษณะดังนี้: while (true) { draw(); swap_buffers(); } ฉันหมดเวลาอย่างระมัดระวังและฉันพบว่าเวลาจากการโทรครั้งเดียวeglSwapBuffers()(หรือglfwSwapBuffersสิ่งเดียวกัน) ต่อไปคือ ~ 16.6 มิลลิวินาที เวลาจากหลังจากการโทรถึงeglSwapBuffers()ก่อนการโทรครั้งถัดไปจะน้อยกว่านั้นเล็กน้อยถึงแม้ว่าสิ่งที่ถูกวาดจะง่ายมาก เวลาที่การแลกเปลี่ยนบัฟเฟอร์ใช้เวลาน้อยกว่า 1 มิลลิวินาที อย่างไรก็ตามเวลาจากแอปเปลี่ยนสิ่งที่มันวาดในการตอบสนองต่อการกดปุ่มเพื่อการเปลี่ยนแปลงที่เกิดขึ้นจริงบนหน้าจอคือ> 150ms (ประมาณ 8-9 เฟรมมูลค่า) วัดจากการบันทึกกล้องของหน้าจอและคีย์บอร์ดที่ 60fps …