Moving Shape via Mouse in Opengl -


  रिक्त आयत (शून्य) {glClear (GL_COLOR_BUFFER_BIT); glBegin (GL_QUADS); glColor3f (1.0,0.0,0.0); glVertex2f (m_x-0.25, m_y-0.25); glColor3f (1.0,0.0,0.0); glVertex2f (m_x-0.25, m_y-0.75); glColor3f (1.0,0.0,0.0); glVertex2f (m_x-0.75, m_y-0.75); glColor3f (1.0,0.0,0.0); glVertex2f (m_x-0.75, m_y-0.25); glEnd (); glutSwapBuffers ();  

मैं आयताकार को दबाए हुए माउस पर ले जाना चाहता हूं। M_x और m_y ग्लोबल वेरिएबल हैं। इस फ़ंक्शन ने मुख्य ग्लुत डिस्प्लेफंक (आयत) में कहा है, माउस फ़ंक्शन इस तरह से:

  शून्य माउस (इंट बटन, इंट स्टेट, इंट एक्स, इंट y) स्विच बटन) {case GLUT_LEFT_BUTTON: if (state == GLUT_DOWN) {m_x = x; m_y = y; आयत (); glutSwapBuffers (); }     टूटना; डिफ़ॉल्ट: ब्रेक; }  

जब अनुप्रयोग चलाता है, तो यह एक आयताकार खींचता है जब मैंने माउस को चूहे के आयत को खो दिया। मेरा क्या गलत है?

अपने माउस हैंडलर में सामान को उस तरह से प्रस्तुत न करें, बस ऑब्जेक्ट स्थिति को अपडेट करें और glutPostRedisplay () :

  #include & lt; GL / glut.h & gt; फ्लोट objX = 100; फ्लोट objY = 100; फ्लोट objSize = 50; Bool dragging = false; शून्य माउस (इंट बटन, इंट स्टेट, इंट एक्स, इंट y) {if (GLUT_DOWN == स्टेट) {बूल टकराने = ओजजेक्स - ओबीजेस & लेफ्टिनेंट; = एक्स एंड amp; एक्स एंड एलटी; = ओजजेक्स + ओब्जेसिज एंड amp; ObjY - objSize & lt; = y & amp; amp; वाई एंड एलटी; = ओब्ज़ी + + objSize; अगर (टकराने) {dragging = true; ObjX = x; ObjY = y; glutPostRedisplay (); }} और {dragging = false; }} शून्य गति (int x, int y) {if (ड्रैगिंग) {objX = x; ObjY = y; glutPostRedisplay (); }} शून्य रेखाचित्र (फ्लोट एक्स, फ्लोट वाई, फ्लोट आकार) {glPushMatrix (); GlTranslatef (एक्स, वाई, 0.0 एफ); GlScalef (आकार, आकार, 1.0 एफ); ग्लबेगिन (जीएल_कैडएस); GlColor3ub (255, 255, 255); GlVertex2f (-1, -1); GlVertex2f (1, -1); GlVertex2f (1, 1); GlVertex2f (-1, 1); glEnd (); glPopMatrix (); } शून्य प्रदर्शन () {glClearColor (0, 0, 0, 1); ग्लक्लियर (जीएल_कॉल्लो_B_BFFER_BIT | GL_DEPTH_BUFFER_BIT); ग्लैमरिक्समोड (जीएल_प्रोजेक्ट); glLoadIdentity (); Const डबल w = glutGet (GLUT_WINDOW_WIDTH); Const डबल एच = glutGet (GLUT_WINDOW_HEIGHT); ग्लोथो (0, डब्ल्यू, एच, 0, -1, 1); ग्लैमट्रिक्समोड (जीएलआईएमडीएल्यूएफ़); glLoadIdentity (); ड्रॉरेक्ट (ओजजेक्स, ओब्जेय, ओजसिज़); glutSwapBuffers (); } Int main (int argc, char ** argv) {glutInit (और argc, argv); GlutInitDisplayMode (GLUT_RGBA | GLUT_DEPTH | GLUT_DOUBLE); GlutInitWindowSize (600, 600); ग्लुट क्रेेट वांडो ("ग्लूट"); ग्लूट डिस्प्लेफंक (डिस्प्ले); ग्लुटमाउसफंक (माउस); ग्लुटमोशनफंक (गति); glutMainLoop (); वापसी 0; }  

Comments

Popular posts from this blog

mysql - How to enter php data into a html multiple select box -

java - Can't add JTree to JPanel of a JInternalFrame -

c++ - Cassandra datastax cpp driver - avoiding unnecessary copies -