@@ -92,7 +92,11 @@ bool Sprite3D::loadFromObj(const std::string& path)
9292
9393 for (int i = 0 ; i < _mesh->getMeshPartCount (); i++)
9494 {
95- _programState.pushBack (GLProgramState::get (getDefGLProgram (_mesh->getAttribFlag () & GL::VERTEX_ATTRIB_FLAG_TEX_COORDS)));
95+ auto programstate = GLProgramState::get (getDefGLProgram (_mesh->getAttribFlag () & GL::VERTEX_ATTRIB_FLAG_TEX_COORDS));
96+ _programState.pushBack (programstate);
97+
98+ programstate->setVertexAttribPointer (" a_position" , 3 , GL_FLOAT, GL_FALSE, 8 * sizeof (float ), (void *)0 );
99+ programstate->setVertexAttribPointer (" a_texCoord" , 2 , GL_FLOAT, GL_FALSE, 8 * sizeof (float ), (void *)(6 * sizeof (float )));
96100 }
97101
98102 // add to cache
@@ -143,7 +147,11 @@ bool Sprite3D::init(const std::string &path)
143147
144148 for (int i = 0 ; i < _mesh->getMeshPartCount (); i++)
145149 {
146- _programState.pushBack (GLProgramState::get (getDefGLProgram (mesh->getAttribFlag () & GL::VERTEX_ATTRIB_FLAG_TEX_COORDS)));
150+ auto programstate = GLProgramState::get (getDefGLProgram (mesh->getAttribFlag () & GL::VERTEX_ATTRIB_FLAG_TEX_COORDS));
151+ _programState.pushBack (programstate);
152+
153+ programstate->setVertexAttribPointer (" a_position" , 3 , GL_FLOAT, GL_FALSE, 8 * sizeof (float ), (void *)0 );
154+ programstate->setVertexAttribPointer (" a_texCoord" , 2 , GL_FLOAT, GL_FALSE, 8 * sizeof (float ), (void *)(6 * sizeof (float )));
147155 }
148156
149157 _path = fullPath;
@@ -219,15 +227,16 @@ void Sprite3D::onDraw(const Matrix &transform, bool transformUpdated)
219227 {
220228 auto meshPart = _mesh->getMeshPart (i);
221229 auto programstate = _programState.at (i);
222- size_t offset = (size_t )_mesh->getVertexPointer ();
223- programstate->setVertexAttribPointer (" a_position" , 3 , GL_FLOAT, GL_FALSE, 8 * sizeof (float ), (void *)offset);
224- programstate->setVertexAttribPointer (" a_texCoord" , 2 , GL_FLOAT, GL_FALSE, 8 * sizeof (float ), (void *)(offset + 6 * sizeof (float )));
230+ size_t offset = 0 ;// (size_t)_mesh->getVertexPointer();
231+
225232
226233 programstate->setUniformVec4 (" u_color" , Vector4 (color.r , color.g , color.b , color.a ));
227234 if (_textures.at (i))
228235 {
229236 GL::bindTexture2D (_textures.at (i)->getName ());
230237 }
238+
239+ glBindBuffer (GL_ARRAY_BUFFER, _mesh->getVertexBuffer ());
231240 programstate->apply (transform);
232241
233242 glBindBuffer (GL_ELEMENT_ARRAY_BUFFER, meshPart->getIndexBuffer ());
0 commit comments