سؤال

ولدي تنفيذ تخمة القياسية. وظيفة عرض يعيد رسم كل كائن، ولكن أنا بحاجة إلى التحديث المستمر على قيم معينة من كل كائن. كما هو، والطريقة الوحيدة التي يمكنني أن أفكر للقيام بذلك هي لتفرخ موضوع للتعامل مع التحديث. ومع ذلك، لا يمكنني استخدام glutPostRedisplay () من ترابط مختلف للحصول على وفرة لتحديث الإطار. ما هو وسيلة جيدة أن يكون حلقة لتحديث القيم إلى جانب حلقة تخمة؟

وأيضا، ما هي أفضل طريقة للنوم لكسور ثانية (بدلا من النوم () لمدة ثانية كاملة).

هل كانت مفيدة؟

المحلول

إذا كنت بحاجة الى بعض نوع من التحديث المنتظم، وربما كنت ترغب في تعيين <لأ href = "http://www.opengl.org/resources/libraries/glut/spec3/node63.html#SECTION000818000000000000000" يختلط = " نوفولو noreferrer "> glutIdleFunc . هذه هي وظيفة من شأنها أن الحصول على استدعاء في حلقة كلما كانت هناك أي أحداث القادمة لتتم معالجتها. إذا كنت تريد بدلا من أن يدعو شيء على فترات منتظمة (على عكس بأسرع وقت ممكن)، قد ترغب في محاولة <لأ href = "http://www.opengl.org/resources/libraries/glut/spec3/node64. أتش تي أم أل # SECTION000819000000000000000 "يختلط =" نوفولو noreferrer "> glutTimerFunc الذي يسمح لك لجدولة شيء ليتم تشغيلها من قبل حلقة تخمة بعض عدد من ميلي ثانية في المستقبل.

وأما بالنسبة لسؤالك الثاني، إذا كنت بحاجة إلى النوم لكسور ثانية، قد ترغب في محاولة <لأ href = "http://www.opengroup.org/onlinepubs/007908799/xsh/usleep.html" يختلط = "نوفولو noreferrer"> usleep لفترات قرار ميكروثانية النوم، أو nanosleep لتحديد فترات النوم في نانو ثانية (على الرغم من أنك لن فعلا للحصول على قرار نانو ثانية). أنا لا أعرف ما منصة كنت أو إذا كانت هذه متوفرة على ويندوز، ولكن ينبغي أن تكون متاحة على أي نظام POSIX متوافقة (لينكس، BSD، ماك OS X). ولكن ربما لأغراضك glutTimerFunc سوف تعمل على نحو أفضل.

تعديل لإضافة : ليبدو على ويندوز سوف تحتاج إلى استخدام [Sleep] (<لأ href = "http://msdn.microsoft.com/en-us/library/ms686298 (VS.85٪ 29.aspx) "يختلط =" نوفولو noreferrer "> http://msdn.microsoft.com/en-us/library/ms686298 (VS.85٪ 29.aspx) (لاحظ S رأس المال)، والتي تأخذ وقتا في الألف من الثانية.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top