2015-08-06 8 views
6

Niedawno uaktualniłem mój komputer do systemu Windows 10 i zainstalowałem Visual Studio 2015. Próbuję napisać program "Hello OpenGL" w Visual Studio 2015, projekt zostanie pomyślnie zbudowany, ale opuścił kod 1. Wszystko, co otrzymałem, to to, że utworzone okno pojawiło się i zniknęło bardzo szybko. Tu idzie mój kod:Program OpenGL zakończył pracę z kodem 1 w Visual Studio 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; 
} 

Jak już wspomniano powyżej, projekt zostanie ukończona pomyślnie, oto reuslt budynek:

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 ========== 

Ale po naciśnięciu F5 debugować program, to zniechęcać mnie rezultat:

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

put break-punkt i wtedy debugowania –

+3

wydaje się uzasadnione mnie. Bez wywołania zwrotnego dla zdarzeń okna program ten nie ma nic wspólnego, ale natychmiast kończy pracę. –

+0

@AliKazmi Dzięki za odpowiedź. W rzeczywistości próbowałem ustawić punkt przerwania w wywołaniu 'glutMainLoopEvent()', to dało okno konsoli i normalne okno, więc domyślam się, że problemem jest 'gutMainLoopEvent() '. –

Odpowiedz

3

połączeń glutMainLoop zamiast glutMainLoopEvent.

Późniejsza glutMainLoopEvent jest funkcją specyficzną dla FreeGLUT, która pozwala umieścić ekspedycję zdarzeń GLUT w niestandardowej zapisanej pętli; dlatego należy go wywołać z pętli i określić, kiedy należy wyjść z programu.

glutMainLoop implementuje własną pętlę główną i kończy działanie programu po zamknięciu ostatniego okna.

+0

Dzięki za odpowiedź @datenwolf. Właściwie najpierw używam 'glutMainLoop', potem używam' glutMainLoopEvent', a nie działa. –

6

Przede wszystkim dzięki ludziom, którzy dali mi odpowiedź. Mam zorientowali się, co jest problemem, wszystko co trzeba zrobić to zarejestrować funkcję zwrotną dla okna, więc tutaj jest kod uruchomiony:

#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

awwww bóg, gdzie był ten post 2 godziny temu?!? – svarog

Powiązane problemy