Wieldmesh: don't force anisotropic filtering on, instead disable mipmaps

This should fix #1844. Thanks to oleastre for making the first version
of this commit (#1848).
This commit is contained in:
Kahrl 2014-11-26 15:17:17 +01:00
parent dbae8a8854
commit ec5188a49a
2 changed files with 6 additions and 2 deletions

View File

@ -206,6 +206,7 @@ WieldMeshSceneNode::WieldMeshSceneNode(
m_bounding_box(0.0, 0.0, 0.0, 0.0, 0.0, 0.0)
{
m_enable_shaders = g_settings->getBool("enable_shaders");
m_anisotropic_filter = g_settings->getBool("anisotropic_filter");
m_bilinear_filter = g_settings->getBool("bilinear_filter");
m_trilinear_filter = g_settings->getBool("trilinear_filter");
@ -280,14 +281,16 @@ void WieldMeshSceneNode::setExtruded(const std::string &imagename,
material.setFlag(video::EMF_BACK_FACE_CULLING, true);
// Enable filtering only for high resolution texures
if (dim.Width > 32) {
material.setFlag(video::EMF_ANISOTROPIC_FILTER, m_anisotropic_filter);
material.setFlag(video::EMF_BILINEAR_FILTER, m_bilinear_filter);
material.setFlag(video::EMF_TRILINEAR_FILTER, m_trilinear_filter);
} else {
material.setFlag(video::EMF_ANISOTROPIC_FILTER, false);
material.setFlag(video::EMF_BILINEAR_FILTER, false);
material.setFlag(video::EMF_TRILINEAR_FILTER, false);
}
// anisotropic filtering removes "thin black line" artifacts
material.setFlag(video::EMF_ANISOTROPIC_FILTER, true);
// mipmaps cause "thin black line" artifacts
material.setFlag(video::EMF_USE_MIP_MAPS, false);
if (m_enable_shaders)
material.setTexture(2, tsrc->getTexture("disable_img.png"));
}

View File

@ -64,6 +64,7 @@ private:
bool m_lighting;
bool m_enable_shaders;
bool m_anisotropic_filter;
bool m_bilinear_filter;
bool m_trilinear_filter;