Skip to content

Commit 23e8786

Browse files
committed
using vbo
1 parent 56fc0f4 commit 23e8786

File tree

1 file changed

+14
-5
lines changed

1 file changed

+14
-5
lines changed

cocos/3d/CCSprite3D.cpp

Lines changed: 14 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)