2012-01-23 3 views
2

Visual Studio 2010에서 다음과 같은 C++ OpenGL 코드를 실행하려고합니다. OpenGL 유틸리티 툴킷으로 openglut을 사용하고 있습니다.OpenGL이 Visual Studio에서 주 기능을 건너 뜁니다.

#include <iostream> 
#include <gl\openglut.h> 

using std::cout; 
using std::endl; 

void RenderScene() 
{ 
    glClear(GL_COLOR_BUFFER_BIT); 
    glFlush(); 
} 

void SetupRC() 
{ 
    glClearColor(0, 0, 1.0f, 1.0f); 
} 

int main(int argc, char* argv[]) 
{ 
    cout << "Test1" << endl; 

    glutInit(&argc, argv); 
    glutInitDisplayMode(GLUT_SINGLE | GLUT_RGBA); 
    glutCreateWindow("Simple"); 
    glutDisplayFunc(RenderScene); 

    SetupRC(); 

    glutMainLoop(); 

    cout << "Test2" << endl; 

    return 0; 
} 

코드는 올바르게 컴파일되지만 디버깅하지 않고 실행하면 콘솔에 아무 것도 표시되지 않습니다. 첫 번째 cout 문에서 중단 점을 만들고 디버그로 실행하면 중단 점에서 중단되지 않습니다. 그것은 주요 기능을 건너 뛰는 것 같습니다. 내가 glut을 주석 처리 한 후, 2 개의 cout 문과 clean 솔루션 사이의 gl 문은 올바르게 작동합니다 (중단 점에서 중지됨). 솔루션을 깨끗하게하지 않으면 올바르게 동작하지 않지만 변경 한 후에 코드를 컴파일하는 Visual Studio를 볼 수 있습니다. 이러한 이상한 행동은 내가 OpenGL 코드를 포함 할 때만 발생합니다. 정상적으로 변경 한 후에도 솔루션을 정리할 필요가 없습니다. 이것에 대한 이유는 무엇입니까?

+1

Glut에는 자체 기본 방법이 있습니까? 그리고 당신은 implmentor로서, 다른 어떤 방법을 구현하기로되어 있습니까? (메모리에서 말하면, Glut을 보았을 때부터 오랜 시간이 걸렸으므로 완전히 틀릴 수도 있고 다른 프레임 워크를 생각할 수도 ...) – TJMonk15

+0

OpenGL을 처음 사용했지만이 예제를 직접 "OpenGL SuperBible 제 4 판 "이므로 정확해야합니다. –

+0

@ TJMonk15 : GLUT는 메인을 제공하지 않습니다. – datenwolf

답변

0

실행 파일 근처에 freeglut.dll 파일을 두어야한다는 것이 밝혀졌습니다. 전에 내가 system32 폴더에 것들을 혼란시키지 않도록 넣어. 이제 코드가 작동합니다. Visual Studio에서 일종의 오류가 발생했지만 오류나 경고가 표시되지 않았습니다.

0

일반적으로 glutMainLoop함수는을 반환하지 않습니다. 창을 닫으면 해당 기능이 응용 프로그램을 완전히 중지합니다. 함수 호출 후에 아무 것도 실행되지 않습니다.

나중에 코드를 실행하더라도 창을 닫은 경우에만 발생합니다. glutMainLoop은 앉아서 창문에서 일하기를 기다립니다. 창에서 이벤트가 발생하면 등록한 콜백 함수를 호출합니다 (마우스 이동, 마우스 클릭, 디스플레이 업데이트 필요, 타이머 등).

루프를 while(true) 루프로 생각하십시오.

+0

나는 모든 것을 알고 있지만주의 깊게 읽은 경우, 모든 함수가 나오기 전에 주 함수의 첫 번째 문장 인 첫 번째 문장에서 깨지지 않는다고 말했습니다. –

관련 문제