2015-08-06 8 views
6

में कोड 1 के साथ निकल गया है मैंने हाल ही में अपने पीसी को विंडोज 10 में अपग्रेड किया है और विजुअल स्टूडियो 2015 स्थापित किया है। मैं विजुअल स्टूडियो 2015 में "हैलो ओपनजीएल" प्रोग्राम लिखने का प्रयास करता हूं, परियोजना सफलतापूर्वक बनाई जाती है, लेकिन यह कोड 1 से बाहर निकला है। मुझे बस इतना मिलता है कि बनाई गई खिड़की दिखाई दी और जल्द ही गायब हो गई।ओपनजीएल प्रोग्राम विजुअल स्टूडियो 2015

#include <GL\glew.h> 
#include <GL\freeglut.h> 
#include <iostream> 

int main(int argc, char** argv) 
{ 
    glutInit(&argc, argv); 
    glutInitDisplayMode(GLUT_DEPTH | GLUT_DOUBLE | GLUT_RGBA); 
    glutInitWindowSize(800, 600); 
    glutInitWindowPosition(100, 100); 
    glutCreateWindow("Hello OpenGL"); 

    glutMainLoopEvent(); 

    return 0; 
} 

मैं ऊपर उल्लेख किया है, परियोजना को सफलतापूर्वक बनाया जाता है, यहां निर्माण reuslt है:

1>------ Build started: Project: HelloGL, Configuration: Debug Win32 ------ 
1> main.cpp 
1> HelloGL.vcxproj -> D:\OpenGL Projects\HelloGL\Debug\HelloGL.exe 
========== Build: 1 succeeded, 0 failed, 0 up-to-date, 0 skipped ========== 

लेकिन जब मैं F5 प्रेस कार्यक्रम डिबग करने के लिए, यह मेरे साथ निराश यहाँ मेरी कोड चला जाता है परिणाम:

The thread 0x23d4 has exited with code 1 (0x1). 
The thread 0x20b8 has exited with code 1 (0x1). 
The thread 0x10d0 has exited with code 1 (0x1). 
The program '[7040] HelloGL.exe' has exited with code 1 (0x1). 
+0

डाल तोड़ने बिंदु और फिर डिबग –

+3

करने के लिए उचित लगता है मुझे। खिड़की की घटनाओं के लिए कॉलबैक के बिना, इस कार्यक्रम में कुछ भी नहीं है लेकिन तुरंत बाहर निकलें। –

+0

@AliKazmi आपके उत्तर के लिए धन्यवाद। असल में मैंने 'glutMainLoopEvent()' कॉल पर ब्रेकपॉइंट सेट करने का प्रयास किया है, इसने एक कंसोल विंडो और एक सामान्य विंडो दी है, इसलिए मुझे लगता है कि समस्या 'gutMainLoopEvent() 'है। –

उत्तर

3

कॉल glutMainLoopEvent के बजाय glutMainLoop

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

glutMainLoop अपना मुख्य लूप लागू करता है और अंतिम विंडो बंद होने पर प्रोग्राम से बाहर निकलता है।

+0

आपके उत्तर के लिए धन्यवाद, @ डेटनवॉल्फ। वास्तव में मैं पहले 'glutMainLoop' का उपयोग करता हूं, फिर मैं' glutMainLoopEvent' का उपयोग करता हूं, न तो काम करता है। –

6

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

#include <GL\glew.h> 
#include <GL\freeglut.h> 
#include <iostream> 

// myDisplay 
void myDisplay() 
{ 
    glClear(GL_COLOR_BUFFER_BIT); // Clear the screen 
    glFlush(); 
} 
int main(int argc, char** argv) 
{ 
    glutInit(&argc, argv); 
    glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB); 
    glutInitWindowSize(800, 600); 
    glutInitWindowPosition(100, 100); 
    glutCreateWindow("Hello OpenGL"); 

    // Register a callback function for the window's repainting event 
    glutDisplayFunc(myDisplay); 

    glutMainLoop(); 

    return 0; 
} 
+0

ईश्वर भगवान, 2 घंटे पहले यह पोस्ट कहां था?! – svarog

संबंधित मुद्दे