2009-12-07 11 views
14

मैंने अभी ओपनजीएल का उपयोग शुरू कर दिया है और ऐसा लगता है कि glutMainLoop() के काम को समझना आसान नहीं है वास्तव में क्या होता है? क्या यह तब तक कुछ नहीं कर रहा है जब तक कि किसी भी फ़ंक्शन कॉल का जवाब न हो?opengl glutmainloop()

उत्तर

17

यह आपके प्रदर्शन कॉलबैक को बार-बार कॉल करता है, जिससे निष्क्रिय हो जाता है ताकि यह संभव हो तो एक विशिष्ट फ़्रेमेट को बनाए रख सके, और यदि आवश्यक हो तो अन्य (जैसे कि यदि आप विंडो का आकार बदलते हैं या इनपुट ईवेंट ट्रिगर करते हैं)।

अनिवार्य रूप से, इस फ़ंक्शन के भीतर मुख्य प्रोग्राम लूप है, जहां जीएलयूटी आपके लिए अधिकांश काम करता है और आपको इन कॉलबैक में विशिष्ट प्रोग्राम तर्क स्थापित करने की अनुमति देता है। यह थोड़ी देर के बाद से मैंने जीएलयूटी के साथ काम किया है, और यह निश्चित रूप से पहले भ्रमित है।

आपकी डिस्प्ले कॉलबैक में जो भी हो रहा है उसे आकर्षित करने के लिए स्पष्ट रूप से आपका मुख्य तर्क होना चाहिए। निष्क्रिय कॉलबैक में कुछ हल्के वजन वाले ऑपरेशन होना चाहिए यह निर्धारित करने के लिए कि आखिरी बार डिस्प्ले को आखिरी बार डिस्प्ले से क्या कहा जाना चाहिए। उदाहरण के लिए, यदि आप कुछ एनिमेट कर रहे हैं, तो यह वह जगह होगी जहां आप अपनी स्थिति या अभिविन्यास बदलते हैं।

+2

ग्लूट ने मुझे जीवन के लिए डरा दिया –

+1

जीएलयूटी दर्दनाक है और यह सुंदर नहीं है ... यह वास्तव में ग्राफिक्स प्रोग्रामिंग से मुझे बंद कर दिया। – StrixVaria

+0

घूर्णन मेरे लिए पागल था, जैसे 'wtf, एक z-coordinate है?' एक बार जब मैंने भौतिकी ली और कुछ नियमों को सीखा, तो सबकुछ –

4

यह ठीक है जैसा कि स्ट्रिक्सविरिया ने कहा है।

glutMainLoop GLUT ईवेंट प्रसंस्करण पाश में प्रवेश करता है। इस दिनचर्या को एक बार जीएलयूटी कार्यक्रम में बुलाया जाना चाहिए। एक बार बुलाया, यह दिनचर्या कभी वापस नहीं आएगा। यह पंजीकृत होने वाले किसी भी कॉलबैक के रूप में आवश्यक होगा।

ओपन और भरमार का प्रयोग से here

2

लिया एक साथ मतलब है कि आप एक 'भरमार' कार्यक्रम कॉलबैक कार्यों में ओपन आदेशों का उपयोग करता है लेखन की जाएगी। मुख्य में ग्लूट फ़ंक्शन शामिल हैं। कई ग्लूट फ़ंक्शंस को कॉलबैक फ़ंक्शन पंजीकृत होने की आवश्यकता होती है। उन कॉलबैक फ़ंक्शंस में आमतौर पर ओपनएल कमांड होते हैं।

आपके प्रश्न पर आ रहा है, अब जब यह स्पष्ट हो जाता है कि आप मुख्य रूप से एक ग्लूट प्रोग्राम लिख रहे हैं, तो यह भी लिया जाना चाहिए कि glutMainLoop फ़ंक्शन कॉल वास्तव में कॉलबैक फ़ंक्शन निष्पादित करता है जब आवश्यक हो, जो बदले में ओपनएल कमांड निष्पादित करता है।

2

अच्छी तरह से glutMainLoop मुख्य कार्य है जो कॉलिंग को कॉल करने और प्रदर्शित करने वाले कार्यों को कॉल करता है और जो आपकी खिड़की को वास्तव में खोला जाता है। आप पाएंगे कि ओपनग्ल डरावना नहीं है।