why not display in openGL? -
int main (int argc, char * argv []) {srand (समय (नल)); glutInit (& amp; argc, argv); // सेटअप ग्लूट ग्लुत इनटडिसप्लेमोडा (जीएलयूयूडीयूबीएलई | जीएलयूयूआरजीबी | जीएलयूयूडीईपीटीएच | जीएलयूटीएएनसीआईएल); GlutInitWindowSize (window_width, window_height); ग्लुट क्रेतेवंडो (विंडो_ शीर्षक); ग्राफिक्स_इनिट (); // आरंटाइम वैरिएबल प्रारंभ करना प्रारंभ करें (); // कॉलबैक ग्लुटआरेशैपफंक् (& amp; reshape); glutDisplayFunc (& amp; प्रदर्शन); glutMouseFunc (& amp; माउस); glutMainLoop (); वापसी 0; } शून्य माउस (इंट बटन, इंट स्टेट, इंट एक्स, इंट y) {if (state == GLUT_DOWN) {draw_method_two (); // विधि 2 glFlush () का उपयोग कर यहाँ आरेखित करें; } और {current_point_i = -1; }} शून्य प्रदर्शन () {// स्पष्ट व्यूपोर्ट ग्लास क्लेयरर (0.0 एफ, 0.0 एफ, 0.0 एफ, 1.0 एफ); ग्लक्लियर (जीएल_कॉल्लो_B_BFFER_BIT | GL_DEPTH_BUFFER_BIT); glMatrixMode (GL_MODELVIEW); glLoadIdentity (); draw_method_one (); ///// विधि का उपयोग करने के लिए वस्तुओं glFlush (); glutSwapBuffers (); } वस्तुओं को आकर्षित करने के दो तरीके हैं में माउस () , draw_objects_two का उपयोग वस्तुओं को खींचने के लिए किया जाता है जब माउस को क्लिक किया जाता है। हालांकि, विंडो में दिखाए गए ऑब्जेक्ट अभी भी draw_method_one द्वारा बनाए गए हैं मैं glFlush में माउस () फ़ंक्शन का उपयोग करता हूं। लेकिन स्क्रीन में यह प्रदर्शित क्यों नहीं किया जाता है? अपडेट: इस से, यह कहते हैं:
फ़ंक्शन आप glutDisplayFunc को पास केवल इसे कहा जाता है कहा जाता है: जिसका अर्थ है कि जब विंडो का आकार बदल जाता है, या जब कोई दूसरी खिड़की उसे छिपाता है यदि आप glutMouseFunc का उपयोग करते हैं, उदाहरण के लिए, आप शायद उस क्लिक्स के अनुसार अपनी विंडो सामग्री को अपडेट करना चाहते हैं (redraw) इसके अलावा, यदि आप एनिमेशन को आकर्षित करते हैं, तो आपको अपने निष्क्रिय फ़ंक्शन से glutPostRedisplay को कॉल करने की आवश्यकता है। तो क्यों glutDisplayFunc () को इस मामले में कहा जाता है?
आपके माउस फ़ंक्शन में कुछ भी तैयार नहीं है, क्योंकि आप केवल glFlush पर कॉल करते हैं लेकिन आप नहीं करते स्वैप बफ़र्स (wtih glutSwapBuffers )। इसलिए आप केवल बैक बफर को आकर्षित करते हैं, जो प्रस्तुत नहीं किया गया है। अगली बार जीएलयूटीयूएस कॉल्स डिस्प्ले, बैक बफर को ओवरराइट किया जाता है और अंत में ग्लुट स्काइपबफ़र्स को कॉल करके प्रस्तुत किया जाता है। लेकिन आपको glutDisplayFunc कॉलबैक, वैसे भी बस माउस फ़ंक्शन में कुछ ध्वज सेट करें (जैसा कि सुझाव दिया गया है) और glutPostRedisplay पर कॉल करें। आपका अपडेट किया गया प्रश्न सही है, प्रदर्शन केवल तब ही कहा जाता है जब आवश्यक हो, इसलिए आपको glutPostRedisplay को कॉल करना पड़ता है जब भी आप कुछ बदलते हैं और इसे स्क्रीन को अपडेट करना चाहते हैं। और वैसे, आपको आमतौर पर glFlush को कॉल करने की आवश्यकता नहीं है, जो बफर स्वैप द्वारा पहले से किया जाना चाहिए।
Comments
Post a Comment