2014-09-25 1 views
-4

는이 코드가 initializeGL() 전에 호출됩니다는 왜 함수들이 그냥 glewInit()는 initializeGL()에서 쓰기에

glewInit(); 
glGenBuffers(2,buffers); 

아래의 코드를 작성해야 않습니다. 때 그것을 액세스 충돌 error.But의 원인이됩니다 initializeGl()에 함수 glewInit()을 넣습니다. glGenBuffers() 잘 작동합니다.

+0

'initializeGL()'함수가 어디에서 호출 되었습니까? – Daniel

+0

QGLWidget에서 상속받은 함수입니다. 그냥 QGLWidget을 상속하고 세 가지 기능인 initializedGL, paintGL 및 resizeGL을 다시 작성합니다. – cloudending

+0

"액세스 충돌 오류가 발생합니다.", 더 자세히 설명 할 수 있습니까? 'glewInit()'는 유효한 컨텍스트를 요구하기 때문에'initializeGL()'에서 작동합니다. – cmannett85

답변

0

glewInit()은 유효한 OpenGL 컨텍스트가 바인딩되고 작동 준비가되어 있어야합니다.

glGenBuffers (기타 기능 중)은 glewInit()으로 초기화됩니다. 예를 들어 유효한 OpenGL 컨텍스트가 없기 때문에 GLEW를 성공적으로 초기화 할 수없는 경우 glGenBuffers에 NULL 포인터가 포함되어있어이를 사용하려고 시도하면 프로그램이 중단됩니다.

Qt에서 OpenGL 컨텍스트는 initializeGL이 호출 될 때만 사용할 수 있습니다. 실제로는 컨텍스트가 바인딩되지 않을 수도있는 …GL으로 끝나는 다른 멤버 메서드 만 호출됩니다.

+0

감사합니다. 이해합니다. – cloudending