2014-12-28 4 views
0

내 간단한 OpenGL 프로그램에 버텍스 버퍼 객체 (VBO)를 사용할 때 세그먼테이션 오류가 발생합니다. 우선 seg 오류를 일으키는 코드의 일부를 공유하도록하겠습니다. 오류를 치화 원인이 무엇인지 아는 사람이버텍스 버퍼 객체를 사용하여 Opengl

cout<< sizeof(glm::vec4)<<endl; 
16 
cout<< objectVertices.size()<<endl; 
507 

있습니까 :

//GLuint objectVerticesVBO; type of my VBO 
    vector<glm::vec4> objectVertices; // I fill this vector somewhere in the code 
    glGenBuffers(1, &objectVerticesVBO); 
    glBindBuffer(GL_ARRAY_BUFFER, objectVerticesVBO); 
    glBufferData(GL_ARRAY_BUFFER, sizeof(glm::vec4)* objectVertices.size(), &objectVertices, GL_STATIC_DRAW); 
    glVertexPointer(3, GL_FLOAT, 0,0); 
    glBindBuffer(GL_ARRAY_BUFFER, 0); 

지금 여기에 내가 인쇄 한 일부 출력은? 나는 renderScene 기능에 내 코드에이 부분을 추가하면

, 나는 단지 빈 화면을 얻을 :

또 다른 질문이다.

glUseProgram(gProgramShader); 
    glBindBuffer(GL_ARRAY_BUFFER, objectVerticesVBO); 
    glVertexPointer(3, GL_FLOAT, 0, 0); 
    glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, objectIndicesVBO); 
    glDrawElements(GL_TRIANGLES, objectVertices.size(), GL_UNSIGNED_INT, 0); 

무엇이 문제입니까?

+0

질문을 보는 것에서 명백한 중복은 아니지만 http://stackoverflow.com/q/24048666/3530129와 같은 문제입니다. –

답변

1

glBufferData 호출에서 & objectVertices& objectVertices[0] 또는 objectVertices.data() (C++ 11)으로 바꿉니다.

요소 은 컨테이너 개체 자체가 아니라 메모리에서 연속적입니다.

+0

예, 그것은 일처럼 보입니다, 고마워요. –

+0

@ 브렛 _ 헤일 내 질문을 편집했습니다. 한번 더 살펴 보시겠습니까? –

+0

@kemalgunes - GL 프로그램이 올바른 것으로 가정하면'glUseProgram' 전에 버퍼, VAO 및 버텍스 속성을 설정해야합니다. –

관련 문제