के भीतर OpenGL glutDisplayFunc का उपयोग करके मैंने OpenGL GLUT टूलकिट द्वारा किए गए कार्यों को समाहित करने के लिए एक C++ क्लास (myPixmap
) बनाया है। कक्षा के display()
सदस्य फ़ंक्शन में GLUT सेट अप करने के लिए आवश्यक अधिकांश कोड शामिल हैं।कक्षा
void myPixmap::display()
{
// open an OpenGL window if it hasn't already been opened
if (!openedWindow)
{
// command-line arguments to appease glut
char *argv[] = {"myPixmap"};
int argc = 1;
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB);
glutInitWindowSize(640, 480);
glutInitWindowPosition(30, 30);
glutCreateWindow("Experiment");
glutDisplayFunc(draw);
glClearColor(0.9f, 0.9f, 0.9f, 0.0);
glClear(GL_COLOR_BUFFER_BIT);
glutMainLoop();
openedWindow = true;
}
}
प्रदर्शन समारोह glutDisplayFunc()
के लिए पारित वर्ग के एक अन्य सदस्य समारोह है: पर मैक ओएस एक्स 10.6.4
void myPixmap::draw(void)
{
glDrawPixels(m,n,GL_RGB,GL_UNSIGNED_BYTE, pixel);
}
हालांकि, जीसीसी 4.2.1 कि यह दावा करते हुए, इस कोड को संकलित करने के लिए मना कर दिया:
argument of type 'void (myPixmap::)()' does not match 'void (*)()'
वहाँ एक वर्ग के एक सदस्य समारोह के अंदर भरमार टूलकिट का उपयोग करने का कोई तरीका है, या मैं सभी भरमार कार्यात्मक कॉल करना होगा कार्यक्रम के main
समारोह के भीतर एनएस?
धन्यवाद Merlyn; यह एक उत्कृष्ट समाधान है। मैंने पाया कि मेरे मामले में, मुझे सी लिंकेज बनाम सी ++ लिंकेज के साथ समस्याएं थीं, इसलिए मुझे उदाहरण के कोड के दूसरे ब्लॉक में दिखाए गए वैश्विक कार्य का उपयोग करना पड़ा। अंत में मैं कार्यक्रम संकलित करने में सक्षम था। मुझे कई उदाहरणों की आवश्यकता नहीं है, इसलिए यह अभी तक मेरे लिए कोई मुद्दा नहीं है। –