2017-11-27 30 views
0

GLEW를 설정할 때 창 컨텍스트를 만든 후에 초기화해야한다는 내용을 읽었습니다. 나는 아래에서 그렇게했지만, 문제는 여전히 glGenBuffers()와 같은 호출을 통해 액세스 위반이 발생한다는 것입니다. 오류 검사도 설정되어 있지 않습니다. GLEW 초기화 배치/RenderWindow 작성 방법 때문입니까? 클래스없이 main() 함수에 코드를 넣는 것은 정상적으로 작동합니다.올바른 순서로 GLEW 초기화를 사용하여 glGenBuffers()로 액세스 위반

Engine() : sf::RenderWindow(){ 
     // setup the SFML renderwindow 
     string windowTitle = "OpenGL"; 

     sf::ContextSettings contextSettings; 
     contextSettings.antialiasingLevel = 4; 
     contextSettings.depthBits = 64; 

     sf::RenderWindow::create(sf::VideoMode(800, 600), windowTitle, sf::Style::Resize | sf::Style::Close, contextSettings); 

     // setup GLEW 
     glewExperimental = GL_TRUE; 
     GLenum err = glewInit(); 
     if(err != GLEW_OK){ 
      printf("ERROR: GLEW failed to initialize.\n"); 
      exit(1); 
     } 
     glViewport(0, 0, sf::RenderWindow::getSize().x, sf::RenderWindow::getSize().y); 
     ... 
} 
+0

모든 것이 괜찮은 주요 기능으로 표시하십시오. – Jeka

답변

0

glewExperimental = GL_TRUE;을 사용해 보지 않으려 고 생각합니다. 이 기능은 코어 프로파일에서 OpenGL 컨텍스트를 만들고 glew와 함께 사용하려는 경우에 특히 사용됩니다. 귀하의 경우와 마찬가지로 기본적으로 라이브러리에 생성 된 컨텍스트 유형을 떠납니다. 이 기본 컨텍스트는 주로 라이브러리의 창 생성 함수에 의해 만들어지며 주로 호환 컨텍스트가됩니다. 그래도 작동하지 않으면 사용중인 라이브러리로 컨텍스트를 만드는 방법을 확인하고 핵심 프로필에 컨텍스트를 만들고 glewExperimental = GL_TRUE;을 입력하십시오.

glut에는 특정 버전 및 핵심 프로필과 함께 컨텍스트를 만드는 기능이 있으므로이를 수행하는 기능이 있어야합니다./디스플레이 창을 만들 4.1 버전 말을 구체적으로 코어 프로파일에 컨텍스트를 만들고

glewExperimental = GL_TRUE; 
    GLenum err = glewInit(); 
    if(err != GLEW_OK){ 
    printf("ERROR: GLEW failed to initialize.\n"); 
    exit(1); 
} 

다른 단지 전용 창 클래스를 만드는 방법을 만들

+0

내 오류는 RenderWindow를 만드는 방법입니다. 창을 main()에서 생성하고 렌더링 함수를 통해 전달하여 제대로 표시되도록 설정했습니다. – Inzuki

+0

죄송합니다. 말씀하시는 말씀을 듣지 못했습니다. –

0

내가 의심 glewExperimental = GL_TRUE;에 전화를 제거하고 볼 사용할 수 있지만. 그것은 문제 일 수 있습니다. glewInit이 호출되기 전에 윈도우가 표시되는지 확인하십시오.