2016-09-06 3 views
-1

visualstudio에서 opengl과 관련된 이상한 문제가 발생합니다. 출시 모드에서 프로그램을 빌드하면 모든 OpenGL 함수가 NULL을 가리 킵니다.SDL OpenGL 앱이 출시 모드에서 충돌합니다.

내가 glew 시도하고 그들 중 누구도 작동하지 gl3w

glew/gl3w 문맥을 작성하고 디버그 모드에서 잘 실행 후 초기화

프로젝트 설정 내가만을 포함하는 폴더를 포함 기본이다 및 각각의 lib 폴더

누구도 비슷한 문제가 있습니까? 않을 것입니다

#include<SDL.h> 
#include<GL\glew.h> 
#include<assert.h> 

int main(int argc, char* args[]) 
{ 
    SDL_Init(SDL_INIT_VIDEO); 

    SDL_Window *window; 
    SDL_GLContext context; 

    SDL_GL_SetAttribute(SDL_GL_CONTEXT_MAJOR_VERSION, 4); 
    SDL_GL_SetAttribute(SDL_GL_CONTEXT_MINOR_VERSION, 0); 
    SDL_GL_SetAttribute(SDL_GL_CONTEXT_PROFILE_MASK, SDL_GL_CONTEXT_PROFILE_CORE); 
    SDL_GL_SetAttribute(SDL_GL_DOUBLEBUFFER, 1); 
    SDL_GL_SetAttribute(SDL_GL_DEPTH_SIZE, 24); 

    window = SDL_CreateWindow("Test", SDL_WINDOWPOS_CENTERED, SDL_WINDOWPOS_CENTERED, 1280, 720, SDL_WINDOW_OPENGL | SDL_WINDOW_SHOWN); 
    context = SDL_GL_CreateContext(window); 
    SDL_GL_MakeCurrent(window, context); 
    glewExperimental = GL_TRUE; 
    assert(!glewInit()); 

    GLuint id; 
    glGenVertexArrays(1, &id); 

    SDL_Quit(); 
    return 0; 
} 
+0

내 게시물 downvoting 주셔서 감사합니다 매우 유용한, btw 인스턴트 메신저 – Creysys

+0

좀 더 자세한 정보를 제공 할 수 있습니다 - GLEW/GL3W를로드하는 방법, 프로젝트 설정 등. 릴리스에서 작동하지만 디버깅하지 않는 경우 정의되지 않은 동작이 발생하고 있거나 프로젝트 설정이 잘못 구성되었다는 의미입니다. – HexCoder

+0

추가 include/libs를 제외한 기본 프로젝트 옵션을 사용합니다. – Creysys

답변

2
assert(!glewInit()); 

는 릴리스 모드로 컴파일하세요. 따라서 glewInit()은 호출되지 않으며 glGenVertexArrays()은 NULL로 유지됩니다.

일반적으로 NULL 함수 포인터를 호출하면 작동하지 않습니다.

+0

에서 실행 해보십시오. 이제는 모든 컴파일러 옵션을 시험해 보는 바보처럼 느껴집니다 ^^ – Creysys

관련 문제