diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/mapblock.cpp | 62 |
1 files changed, 14 insertions, 48 deletions
diff --git a/src/mapblock.cpp b/src/mapblock.cpp index f525ed3e9..25561008a 100644 --- a/src/mapblock.cpp +++ b/src/mapblock.cpp @@ -297,8 +297,6 @@ void MapBlock::updateMesh() core::list<FastFace*> *fastfaces_new = new core::list<FastFace*>; - //TimeTaker timer1("updateMesh1", g_device); - /* We are including the faces of the trailing edges of the block. This means that when something changes, the caller must @@ -342,26 +340,12 @@ void MapBlock::updateMesh() } } - //timer1.stop(); - //TimeTaker timer2("updateMesh2", g_device); - scene::SMesh *mesh_new = NULL; - - //s32 appendtime = 0; if(fastfaces_new->getSize() > 0) { mesh_new = new scene::SMesh(); scene::IMeshBuffer *buf = NULL; - - /* - Buffer for lesser calls to - mesh_new->getMeshBuffer(g_materials[f->material]), - which is slow. - - key = material id, value = meshbuffer of that material - */ - core::map<u8, scene::IMeshBuffer*> bufs; core::list<FastFace*>::Iterator i = fastfaces_new->begin(); @@ -375,43 +359,27 @@ void MapBlock::updateMesh() if(f->material != material_in_use || buf == NULL) { // Try to get a meshbuffer associated with the material - core::map<u8, scene::IMeshBuffer*>::Node* - n = bufs.find(f->material); - - if(n != NULL) + buf = mesh_new->getMeshBuffer(g_materials[f->material]); + // If not found, create one + if(buf == NULL) { - buf = n->getValue(); - } - else - { - buf = mesh_new->getMeshBuffer(g_materials[f->material]); - // If not found, create one - if(buf == NULL) - { - // This is a "Standard MeshBuffer", - // it's a typedeffed CMeshBuffer<video::S3DVertex> - buf = new scene::SMeshBuffer(); - bufs[f->material] = buf; - // Set material - ((scene::SMeshBuffer*)buf)->Material = g_materials[f->material]; - // Use VBO - //buf->setHardwareMappingHint(scene::EHM_STATIC); - // Add to mesh - mesh_new->addMeshBuffer(buf); - // Mesh grabbed it - buf->drop(); - } + // This is a "Standard MeshBuffer", + // it's a typedeffed CMeshBuffer<video::S3DVertex> + buf = new scene::SMeshBuffer(); + // Set material + ((scene::SMeshBuffer*)buf)->Material = g_materials[f->material]; + // Use VBO + //buf->setHardwareMappingHint(scene::EHM_STATIC); + // Add to mesh + mesh_new->addMeshBuffer(buf); + // Mesh grabbed it + buf->drop(); } material_in_use = f->material; } u16 indices[] = {0,1,2,2,3,0}; - - //TimeTaker timer("", g_device); - buf->append(f->vertices, 4, indices, 6); - - //appendtime += timer.stop(true); } // Use VBO for mesh (this just would set this for ever buffer) @@ -422,8 +390,6 @@ void MapBlock::updateMesh() <<" materials"<<std::endl;*/ } - //dstream<<"appendtime="<<appendtime<<std::endl; - // TODO: Get rid of the FastFace stage core::list<FastFace*>::Iterator i; i = fastfaces_new->begin(); |