2012-10-18 3 views
1

나는 opengl을 사용하여 소행성 복제본을 만들려고 노력해 왔으며 세분화 오류에 완전히 빠졌습니다. 어떻게 해결해야할지 확신이 서지 않습니다. 그것은 함수 glGenBuffersARB()의 사용에 발생하는 것 같습니다. vertexbuffer를 사용하여 행을 주석 처리하면 프로그램이 컴파일되고 잘 실행됩니다 (그러나 렌더링 된 것은 아님). gdb 디버거를 사용하여 Eclipse에서 minGW 컴파일러를 사용하고 있으며 1.5보다 이전 버전의 OpenGL을 지원할 수 있도록 확장을 사용하려고합니다.세그먼트 오류가 glGenBuffersARB (1, & _VertexBufferObject)에 있습니다.

glGenBuffers(1, &_VertexBufferObject); 

glBindBufferARB(GL_ARRAY_BUFFER_ARB, _VertexBufferObject); // Bind The Buffer 

glBufferDataARB(GL_ARRAY_BUFFER_ARB, U8VertexCount*3*sizeof(GLfloat), quad,GL_STATIC_DRAW_ARB); 

GLuints이 같은 헤더에 비공개로 선언됩니다

GLuint _VertexArrayObject; 

GLuint _VertexBufferObject; 

int U8VertexStride; 

int U8VertexCount; 

gdb를 추적 현재 위치 : gdb trace

+0

실제로 GLEW를 초기화하여 확장을로드 했습니까? 또한 버퍼 오브젝트는 3.0이 아닌 ** 1.5 ** 이후 핵심 OpenGL입니다. –

+0

GLEW 사이트에서 수행되었으므로 처음에는 glewInit()을 사용하여 GLEW를 올바르게 초기화했다고 생각합니다. 코어가 만들어 졌을 때 나는 섞여 있었음에 틀림 없다. 나는 그 질문을 편집 할 것이다. 감사! – Stephen

+0

glew를 초기화하기 전에 GL 버전을 설정하고 있습니까? 함수 포인터를 인쇄하면 무슨 일이 일어나는지 이해하는 데 도움이됩니다. glBufferDataARB 대 glBufferData 등등. glewInit (glfwOpenWindowHint 사용) 전에 gl 버전을 지정하지 않으면 glew가 하드웨어가 지원하는 기능을 기반으로 맵핑 할 것이라고 생각합니다. – Grimmy

답변

0

나는이 문제에 대한 해결책을 발견했다. 선언하고 사용하는 것이 의도 한대로 작동하지 않는 것으로 보입니다. 개체를 다음과 같이 선언했습니다. CObj Obj; 과 같은 호출 그리기 : Obj.Draw(); 포인터로 선언하면 : CObj * Obj; 그리고 이것을 초기화하는 것 : Obj = new CObj(); 다음 사용 : Obj-> Draw(); 내가 생각했던대로 작동하기 시작했습니다. 왜 이것이 사실인지 나는 확신 할 수 없다. 누군가가 나를 위해 이것을 정리할 수 있다면 감사 할 것이다.

+1

메인을 입력하기 전에 오브젝트가 작성되고 있습니다. gdb 추적). 그럼 아직 초기화되지 않았습니다. – Bahbar