forked from Mirrorlandia_minetest/minetest
Only set material flag on rendered meshes (#5023)
This commit is contained in:
parent
f0c6feca97
commit
c41352a1c7
@ -371,10 +371,10 @@ struct MeshBufListList
|
|||||||
|
|
||||||
void add(scene::IMeshBuffer *buf)
|
void add(scene::IMeshBuffer *buf)
|
||||||
{
|
{
|
||||||
|
const video::SMaterial &m = buf->getMaterial();
|
||||||
for(std::vector<MeshBufList>::iterator i = lists.begin();
|
for(std::vector<MeshBufList>::iterator i = lists.begin();
|
||||||
i != lists.end(); ++i){
|
i != lists.end(); ++i){
|
||||||
MeshBufList &l = *i;
|
MeshBufList &l = *i;
|
||||||
video::SMaterial &m = buf->getMaterial();
|
|
||||||
|
|
||||||
// comparing a full material is quite expensive so we don't do it if
|
// comparing a full material is quite expensive so we don't do it if
|
||||||
// not even first texture is equal
|
// not even first texture is equal
|
||||||
@ -387,7 +387,7 @@ struct MeshBufListList
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
MeshBufList l;
|
MeshBufList l;
|
||||||
l.m = buf->getMaterial();
|
l.m = m;
|
||||||
l.bufs.push_back(buf);
|
l.bufs.push_back(buf);
|
||||||
lists.push_back(l);
|
lists.push_back(l);
|
||||||
}
|
}
|
||||||
@ -508,12 +508,7 @@ void ClientMap::renderMap(video::IVideoDriver* driver, s32 pass)
|
|||||||
{
|
{
|
||||||
scene::IMeshBuffer *buf = mesh->getMeshBuffer(i);
|
scene::IMeshBuffer *buf = mesh->getMeshBuffer(i);
|
||||||
|
|
||||||
buf->getMaterial().setFlag(video::EMF_TRILINEAR_FILTER, m_cache_trilinear_filter);
|
video::SMaterial& material = buf->getMaterial();
|
||||||
buf->getMaterial().setFlag(video::EMF_BILINEAR_FILTER, m_cache_bilinear_filter);
|
|
||||||
buf->getMaterial().setFlag(video::EMF_ANISOTROPIC_FILTER, m_cache_anistropic_filter);
|
|
||||||
buf->getMaterial().setFlag(video::EMF_WIREFRAME, m_control.show_wireframe);
|
|
||||||
|
|
||||||
const video::SMaterial& material = buf->getMaterial();
|
|
||||||
video::IMaterialRenderer* rnd =
|
video::IMaterialRenderer* rnd =
|
||||||
driver->getMaterialRenderer(material.MaterialType);
|
driver->getMaterialRenderer(material.MaterialType);
|
||||||
bool transparent = (rnd && rnd->isTransparent());
|
bool transparent = (rnd && rnd->isTransparent());
|
||||||
@ -521,6 +516,12 @@ void ClientMap::renderMap(video::IVideoDriver* driver, s32 pass)
|
|||||||
if (buf->getVertexCount() == 0)
|
if (buf->getVertexCount() == 0)
|
||||||
errorstream << "Block [" << analyze_block(block)
|
errorstream << "Block [" << analyze_block(block)
|
||||||
<< "] contains an empty meshbuf" << std::endl;
|
<< "] contains an empty meshbuf" << std::endl;
|
||||||
|
|
||||||
|
material.setFlag(video::EMF_TRILINEAR_FILTER, m_cache_trilinear_filter);
|
||||||
|
material.setFlag(video::EMF_BILINEAR_FILTER, m_cache_bilinear_filter);
|
||||||
|
material.setFlag(video::EMF_ANISOTROPIC_FILTER, m_cache_anistropic_filter);
|
||||||
|
material.setFlag(video::EMF_WIREFRAME, m_control.show_wireframe);
|
||||||
|
|
||||||
drawbufs.add(buf);
|
drawbufs.add(buf);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user