c++ - Using Eigen::Vector3f with Opengl ES 2.0 VBO -
i having problem getting eigen::vector3f , opengl es 2.0 vbo work together. initial effort glvertexattribpointer(vertex, 3, gl_float , sizeof(vertex), 0 ). while draws nil if start play stride values can see broken mesh. current code leads crash. in old code using simple vector3 class made 3 floats working fine.
struct vertex { eigen::vector3f pos ; eigen::vector3f normal; }; std::vector<vertex> vertices; std::vector<ushort16> indices; ... gluint vao; uint32 vboid, vboid2; glgenvertexarraysoes(1, &vao); glbindvertexarrayoes(vao); glgenbuffers(1, &vboid); glbindbuffer(gl_array_buffer, vboid); glbufferdata(gl_array_buffer, gl_static_draw , sizeof(vertex) * vertices.size(), &vertices[0]); glbindbuffer(gl_array_buffer, 0); glgenbuffers(1, &vboid2); glbindbuffer(gl_array_buffer, vboid2); glbufferdata(gl_array_buffer, gl_static_draw , sizeof(ushort16) * m_vindices.size(), &indices[0]); glbindbuffer(gl_array_buffer, 0); glbindbuffer(gl_array_buffer, vboid); glenablevertexattribarray(vertex); glvertexattribpointer(vertex, 3, gl_float , sizeof(vertex), &vertices[0].pos ); glenablevertexattribarray(normal); glvertexattribpointer(normal, 3, gl_float , sizeof(vertex), &vertices[0].normal ); glbindbuffer(gl_array_buffer, vboid2); glbindbuffer(gl_array_buffer, 0); glbindvertexarrayoes(0); ...
that solved problem:
i removed the:
glbufferdata(gl_array_buffer, gl_static_draw , sizeof(vertex) * vertices.size(), &vertices[0]); and changed these lines to
glvertexattribpointer(vertex, 3, gl_float , sizeof(vertex), vertices[0].pos.data() ); .... glvertexattribpointer(normal, 3, gl_float , sizeof(vertex), vertices[0].normal.data() ); c++ opengl-es
No comments:
Post a Comment