Fix crash with normal map skinned mesh

This commit is contained in:
Benau 2016-12-07 09:29:40 +08:00
parent ac8d7aa8c7
commit fcebb5c2e6

View File

@ -117,6 +117,7 @@ void STKAnimatedMesh::updateNoGL()
continue; continue;
scene::SSkinMeshBuffer* ssmb = NULL; scene::SSkinMeshBuffer* ssmb = NULL;
video::E_VERTEX_TYPE prev_type = mb->getVertexType();
if (m_skinned_mesh) if (m_skinned_mesh)
{ {
ssmb = dynamic_cast<scene::SSkinMeshBuffer*>(mb); ssmb = dynamic_cast<scene::SSkinMeshBuffer*>(mb);
@ -158,7 +159,7 @@ void STKAnimatedMesh::updateNoGL()
affected || m_all_parts_colorized || (cur_ri affected || m_all_parts_colorized || (cur_ri
&& cur_ri->isTransparent()) ? cur_ri : default_ri)); && cur_ri->isTransparent()) ? cur_ri : default_ri));
if (m_skinned_mesh) ssmb->VertexType = video::EVT_STANDARD; if (m_skinned_mesh) ssmb->VertexType = prev_type;
} }
for (u32 i = 0; i < m->getMeshBufferCount(); ++i) for (u32 i = 0; i < m->getMeshBufferCount(); ++i)
@ -231,6 +232,7 @@ void STKAnimatedMesh::updateGL()
if (!mb) if (!mb)
continue; continue;
scene::SSkinMeshBuffer* ssmb = NULL; scene::SSkinMeshBuffer* ssmb = NULL;
video::E_VERTEX_TYPE prev_type = mb->getVertexType();
if (m_skinned_mesh) if (m_skinned_mesh)
{ {
ssmb = dynamic_cast<scene::SSkinMeshBuffer*>(mb); ssmb = dynamic_cast<scene::SSkinMeshBuffer*>(mb);
@ -267,7 +269,7 @@ void STKAnimatedMesh::updateGL()
mesh.vao = createVAO(mesh.vertex_buffer, mesh.index_buffer, mb->getVertexType()); mesh.vao = createVAO(mesh.vertex_buffer, mesh.index_buffer, mb->getVertexType());
glBindVertexArray(0); glBindVertexArray(0);
} }
if (m_skinned_mesh) ssmb->VertexType = video::EVT_STANDARD; if (m_skinned_mesh) ssmb->VertexType = prev_type;
} }
isGLInitialized = true; isGLInitialized = true;
} }