ekterya.com

ओपनजीएल में क्यूब कैसे बनाऊँ?

ओपनजीएल एक बहुमुखी त्रि-आयामी प्रोग्रामिंग टूल है जिसका प्रयोग साधारण दिनचर्या के माध्यम से 3 डी में जटिल दृश्यों को आकर्षित करने के लिए किया गया था। यह आलेख आपको सिखाना होगा कि क्यूब कैसे खींचना है जिससे आप इसे तीन आयामों में देख सकते हैं!

इस परियोजना के लिए आपको सी भाषा के साथ कोड एडिटर और कुछ प्रोग्रामिंग ज्ञान की जरूरत होगी।

चरणों

भाग 1
प्रारंभिक विन्यास और मुख्य ()

1) ओपनजीएल स्थापित करें

  • शुरू करने के लिए, इन का पालन करें ओपनजीएल को स्थापित करने के लिए कदम आपके सिस्टम में यदि आपके पास पहले से ही सी संकलक के अलावा है, तो आप इस चरण को छोड़ सकते हैं और अगले एक पर जा सकते हैं।

2) दस्तावेज़ बनाएँ

  • अपने पसंदीदा कोड एडिटर में एक नई फाइल बनाएँ और उसे इसे सहेजें: micubo.c

3) पुस्तकालय (# शामिल)

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

    Video: रोहन रक्त झगड़े मंत्रमुग्ध Opaniel कतर 2017



// इसमें शामिल # शामिल # शामिल # शामिल करें # परिभाषित करें GL_GLEXT_PROTOTYPES # ifdef __APPLE __ # शामिल # else # include #endif

4) समारोह प्रोटोटाइप और वैश्विक चर

  • अगला चरण कुछ फ़ंक्शन प्रोटोटाइप घोषित करना होगा।

    // फंक्शनवॉइड डिस्प्ले के प्रोटोटाइप () - विशेष कुंजी () - // ग्लोबल वैरिएबल डबल रोटेट_ए = 0-डबल रोटेट_एक्स = 0-
  • इनमें से प्रत्येक फ़ंक्शन और ग्लोबल वैरिएबल को समझाया जाएगा, जैसा कि आप इस ट्यूटोरियल के अनुसार बाद में लागू करेंगे। अभी के लिए, महत्वपूर्ण बात उन्हें घोषित करना होगा।

5) मुख्य () फ़ंक्शन को कॉन्फ़िगर करें

  • int main (int argc, char * argv []) // प्रारंभ करें GLUT और उपयोगकर्ता मापदंडों procesoglutInit (&argc, argv) - // वास्तविक रंग के साथ अनुरोध विंडो और डबल बफर जेड-बफर ग्लुट इनट डिस्प्ले मोड (GLUT_DOUBLE 

भाग 2
"प्रदर्शन ()" फ़ंक्शन

  • क्यूब को आकर्षित करने के लिए सभी कार्य इस फ़ंक्शन के साथ किया जाएगा। मुख्य विचार छह पक्षों को आकर्षित करना होगा और उन्हें उचित स्थिति में व्यवस्थित करना होगा।

  • संकल्पनात्मक रूप से, आपको एक ओर 4 कोनों को परिभाषित करना होगा और ओपनजीएल को डॉट्स लाइनों से कनेक्ट करना होगा और जैसे ही आप उन्हें परिभाषित करेंगे उन्हें रंग दें। यहां हम इसे करने के लिए कदम पेश करेंगे:

1) ग्लैक्लियर () फ़ंक्शन

  • इस समारोह में आपको पहला कदम उठाया जाएगा रंग और जेड-बफर को साफ करें, अन्यथा, पुराने चित्र अब भी नए चित्र के तहत दिखाई देंगे और खींचा गए ऑब्जेक्ट स्क्रीन पर सही स्थिति में नहीं होंगे।

शून्य प्रदर्शन () // स्क्रीन को हटाएं और Z- बफरग्लियर (GL_COLOR_BUFFER_BIT)
  • आपको इस फ़ंक्शन के लिए कोड की दो अंतिम पंक्तियां भी शामिल करनी चाहिए: glFlush () - और ग्लुटस्पापबफ़र्स () -, जो आपको डबल-बफर प्रभाव देगा।



  • भाग 3
    उपयोगकर्ता के साथ अन्तरक्रियाशीलता

    1) विशेषकीज़ () फ़ंक्शन

    • सब कुछ लगभग तैयार है: आपके पास पहले से ही क्यूब है, लेकिन इसे घुमाए जाने का कोई रास्ता नहीं है। ऐसा करने के लिए, एक फ़ंक्शन बनाएं विशेष कियां ()तीर के साथ तीर कुंजियों को दबाए जाने और घन को घुमाने की अनुमति देने के लिए!

    • इस फ़ंक्शन के लिए आपको वैश्विक चर "rotate_x" और "rotate_y" घोषित करना था जब आप तीर कुंजियों को दाएं और बाएं दबाते हैं, तो चर "rotate_y" 5 डिग्री से बढ़ेगा या घटाएगा इसी तरह, जब आप तीर कुंजी को ऊपर और नीचे दबाते हैं, तो चर "rotate_x" 5 डिग्री से बढ़ेगा या घटाएगा

    specialKeys शून्य (int कुंजी, int x, int y) {// दायाँ तीर इसके घूर्णन 5 gradosif बढ़ जाती है (कुंजी == GLUT_KEY_RIGHT) rotate_y + = 5 - // बाएँ तीर: 5 gradoselse अगर में रोटेशन कम हो जाती है ( कुंजी == GLUT_KEY_LEFT) rotate_y - = 5-else if (कुंजी == GLUT_KEY_UP) rotate_x + = 5-else if (कुंजी == GLUT_KEY_DOWN) rotate_x - = 5 - // अद्यतन pantallaglutPostRedisplay () के लिए अनुरोध -}

    2) ग्लोटाट ()

    • आखिरी अनुदेश ऑब्जेक्ट को घुमाने के लिए लाइनें जोड़ना होगा। फ़ंक्शन पर लौटें प्रदर्शन () और सामने से पहले, नीचे दी गई रेखाएं जोड़ें:

      // transformacionesglLoadIdentity रीसेट () - // घुमाएँ उपयोगकर्ता "rotate_x" और "rotate_y" .glRotatef (rotate_x, 1.0, 0.0, 0.0) -glRotatef (rotate_y, 0.0, 1.0, 0.0) के मूल्यों को बदल जाता है जब - // सामने की ओर: बहुरंगी तरफ ....
    • नोटिस कि की वाक्यविन्यास का ग्लोटेटेफ़ () यह glColor3f () और glVertex3f () के समान है लेकिन इसे हमेशा 4 पैरामीटर की आवश्यकता होती है पहला पैरामीटर रोटेशन की डिग्री है जिसे लागू किया जाएगा और अन्य तीन पैरामीटर रोटेशन एक्स, वाई और जेड के कुल्हाड़ियों हैं। अभी के लिए यह केवल एक्स और वाई पर घुमाने की आवश्यकता होगी।

    • कार्यक्रम में लिखने वाले सभी परिवर्तनों को इस एक के जैसा एक लाइन की आवश्यकता होती है। संकल्पनात्मक रूप से, यह माना जाता है कि "rotate_x" द्वारा परिभाषित राशि द्वारा एक्स अक्ष पर ऑब्जेक्ट कैसे घुमाएंगे और फिर "rotate_y" द्वारा Y अक्ष पर घुमाएंगे। हालांकि, ओपनजीएल एक मैट्रिक्स परिवर्तन में इन सभी घोषणाओं को जोड़ती है। हर बार जब आप "डिस्प्ले" फ़ंक्शन कॉल करते हैं, तो आप एक रूपांतरण मैट्रिक्स बनाएंगे और glLoadIdentity () यह सुनिश्चित करेगा कि आप प्रत्येक पास में एक नया मैट्रिक्स के साथ शुरू करें

      Video: अल्लाह ne Yahudi Qaum jisey बन्दर (बंदर) bana दिया | बायन | उर्दू / हिंदी



    • अन्य परिवर्तन कार्य जो आप लागू कर सकते हैं, glTranslatef () और glScalef () हैं ये फ़ंक्शन glRotatef () के समान हैं, सिवाय इसके कि वे केवल तीन मापदंडों, एक्स, वाई, जेड की मात्रा को अनुवाद करने या ऑब्जेक्ट को स्केल करने के लिए मांगते हैं।

    • वांछित प्रभाव प्राप्त करने के लिए जब आप किसी वस्तु में तीन परिवर्तन लागू करते हैं, तो उन्हें सही क्रम में लागू करना आवश्यक होगा। उन्हें हमेशा क्रम में लिखें: glTranslate, glRotate, फिर glScale. अनिवार्य रूप से ओपनजीएल क्या कर रहा है नीचे से ऊपर के परिवर्तनों को लागू करते हैं। आत्मसात करने के लिए, ओपन परिवर्तनों के साथ एक सरल 1x1x1 घन की उपस्थिति की कल्पना अगर लागू किया ऊपर से नीचे और अगर मैं नीचे से ऊपर था।

    • घन पैमाने पर आकर्षित करने के लिए एक्स में 2 से निम्न कमांड जोड़ें और Y अक्ष Y अक्ष पर हब 180 डिग्री घुमाता है, तो (एक्स अक्ष पर हब 0.1 से चलता है आदेशों glRotate के साथ होता है) , उन्हें ऊपर वर्णित (यदि आप सुनिश्चित नहीं हैं, तो आप इसे अंतिम इस ट्यूटोरियल के अंत में स्थित कोड में किया देखेंगे) को सही क्रम में डाल करने के लिए सुनिश्चित करें।

      // अन्य ट्रांसफ़ॉर्मेंसग्लांसस्लैटफ़ (0.1, 0.0, 0.0) -glRotatef (180, 0.0, 1.0, 0.0) -glScalef (2.0, 2.0, 0.0) -

    संकलन

    • ओपनजीएल के साथ अपनी पहली परियोजना खत्म करने का अंतिम चरण होगा संकलन और कोड निष्पादित. मान लें कि आपके पास अपने निपटान पर एक जीसीसी कम्पाइलर है, कार्यक्रम को संकलित और परीक्षण करने के लिए टर्मिनल में निम्न कमांड चलाएं।

      लिनक्स: जीसीसी -ओ cube.c घन -lGL./ -lglut micuboEn मैक: जीसीसी -ओ foo foo.c -Framework भरमार -Framework OpenGL./ micuboEn विंडोज: जीसीसी -Wall -ofoo foo.c -lglut32cu -lglu32 - lopengl32./ micubo

    भाग 4
    अंतिम कोड

    • तैयार, वहां आपका पहला ओपनजीएल कार्यक्रम है! नीचे एक संदर्भ के रूप में आपके लिए स्रोत कोड है:

    //// फ़ाइल: // micubo.c लेखक: मैथ्यू डियाज़ // निर्मित: 2012/04/25 // परियोजना: स्रोत कोड में ओपन // विवरण एक घन बनाने के लिए: एक ओपन खिड़की बना सकते हैं और एक 3 डी घन आकर्षित / / यह है कि उपयोगकर्ता के लिए तीर कुंजियों // // नियंत्रण बारी बारी से कर सकते हैं: बाएँ तीर: बाएं घुमाएं // दायाँ तीर: // बारी बारी से सही ऊपर तीर: // नीचे तीर ऊपर बारी बारी से: बारी बारी से नीचे // ----------------------------------------------- ----------- // पुस्तकालयों // ---------------------------------- # शामिल # शामिल # शामिल ------------------------ #define __APPLE GL_GLEXT_PROTOTYPES #ifdef __ # शामिल # शामिल endif बाकी // ---- -------------------------------------------------- ---- // समारोह प्रोटोटाइप // --------------------------------------- ------------------- शून्य डिस्प्ले () - शून्य विशेष कुंजी () - // ------------------- --------------------------------------- // वैश्विक चर // ----- -------------------------------------------------- --- डबल रोटेट_य = 0-डबल रोटेट्स te_x = 0 - // -------------------------------------------- -------------- // कॉलबैक फ़ंक्शन "डिस्प्ले ()" // ------------------------ ---------------------------------- शून्य प्रदर्शन () // साफ स्क्रीन और जेड bufferglClear (GL_COLOR_BUFFER_BIT // -------------------------------------------------- -------- // कॉलबैक फ़ंक्शन "विशेष कियां ()" // ------------------------------ ---------------------------- शून्य specialKeys (पूर्णांक कुंजी, int x, int y) {// सही तीर: वृद्धि रोटेशन 5 gradosif (कुंजी == GLUT_KEY_RIGHT) rotate_y + = 5 - // बाएँ तीर 5 gradoselse रोटेशन कमी अगर (कुंजी == GLUT_KEY_LEFT) rotate_y - = 5-else if (कुंजी == GLUT_KEY_UP) rotate_x + = 5-else if (कुंजी = = GLUT_KEY_DOWN) rotate_x - = 5 - // अद्यतन अनुरोध visualizaciónglutPostRedisplay () -} // ------------------------------ ---------------------------- // समारोह "मुख्य ()" // ------------ ---------------------------------------------- int मुख्य (int argc, चार * argv []) GLUT_RGB 
    सामाजिक नेटवर्क पर साझा करें:

    संबद्ध
    © 2021 ekterya.com