glVertexAttribPointer
을 호출해야하는 것은 설명서에서 분명하지 않습니다. VBO 초기화의 일부인 것처럼 보이지만 렌더링하는 동안 호출하는 예제 코드에 주목합니다.언제 glVertexAttribPointer를 호출해야합니까?
glVertexAttribPointer(vertexAttributeId, 2, GL_FLOAT, GL_FALSE, sizeof(Vertex2D), reinterpret_cast<const GLvoid*>(offsetof(Vertex2D, m_x)));
은 glVertexAttribPointer
(glBindBuffer
를 호출 후) 렌더링 동안 GL_ARRAY_BUFFER
또는 호출되어야한다 초기화 중에 호출해야 하는가? 의 말을하자 - - 접착제 사이
어쩌면 질문해야 할 질문은 * 호출해야 할 때가 아니라 * 무엇을 할 것인가입니다. 그것이 무엇을하는지 안다면, 언제 부를지의 여부는 명백합니다. 그리고 "VBO 초기화의 일부"라고 생각하면이 함수가하는 일에 대한 아이디어는 매우 잘못되었습니다. –
@NicolBolas (현재 바인드 된 버퍼의) 속성 데이터의 오프셋을 저장합니까? 그리고 attributeId는 셰이더에있는 속성의 위치입니다 ('glGetAttribLocation'에서 가져 오거나'glBindAttribLocation'을 통해 설정)? –
"* (현재 바인딩 된 버퍼의) 속성 데이터의 오프셋을 저장합니다. * * [[* Dangerously * incomplete.] (http://www.opengl.org/wiki/Vertex_Specification#Vertex_Buffer_Object) ([format information] (http://www.opengl.org/wiki/Vertex_Specification#Vertex_format) 및 [stride data] (http://www.opengl.org/wiki/) 속성뿐만 아니라 그 속성에 사용될 객체 Vertex_Specification # Vertex_buffer_offset_and_stride)를 사용합니다. –