Application of anisotropy to textures moved into GLTexture methods
This commit is contained in:
parent
886da08f89
commit
8012499206
3 changed files with 19 additions and 6 deletions
|
@ -494,16 +494,20 @@ void Bed3D::render_prusa(const std::string &key, bool bottom) const
|
||||||
std::string model_path = resources_dir() + "/models/" + key;
|
std::string model_path = resources_dir() + "/models/" + key;
|
||||||
|
|
||||||
#if ENABLE_TEXTURES_MAXSIZE_DEPENDENT_ON_OPENGL_VERSION
|
#if ENABLE_TEXTURES_MAXSIZE_DEPENDENT_ON_OPENGL_VERSION
|
||||||
|
#if !ENABLE_COMPRESSED_TEXTURES
|
||||||
// use anisotropic filter if graphic card allows
|
// use anisotropic filter if graphic card allows
|
||||||
GLfloat max_anisotropy = GLCanvas3DManager::get_gl_info().get_max_anisotropy();
|
GLfloat max_anisotropy = GLCanvas3DManager::get_gl_info().get_max_anisotropy();
|
||||||
|
#endif // !ENABLE_COMPRESSED_TEXTURES
|
||||||
|
|
||||||
// use higher resolution images if graphic card and opengl version allow
|
// use higher resolution images if graphic card and opengl version allow
|
||||||
GLint max_tex_size = GLCanvas3DManager::get_gl_info().get_max_tex_size();
|
GLint max_tex_size = GLCanvas3DManager::get_gl_info().get_max_tex_size();
|
||||||
#else
|
#else
|
||||||
|
#if !ENABLE_COMPRESSED_TEXTURES
|
||||||
// use anisotropic filter if graphic card allows
|
// use anisotropic filter if graphic card allows
|
||||||
GLfloat max_anisotropy = 0.0f;
|
GLfloat max_anisotropy = 0.0f;
|
||||||
if (glewIsSupported("GL_EXT_texture_filter_anisotropic"))
|
if (glewIsSupported("GL_EXT_texture_filter_anisotropic"))
|
||||||
glsafe(::glGetFloatv(GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT, &max_anisotropy));
|
glsafe(::glGetFloatv(GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT, &max_anisotropy));
|
||||||
|
#endif // !ENABLE_COMPRESSED_TEXTURES
|
||||||
|
|
||||||
// use higher resolution images if graphic card allows
|
// use higher resolution images if graphic card allows
|
||||||
GLint max_tex_size;
|
GLint max_tex_size;
|
||||||
|
@ -518,7 +522,7 @@ void Bed3D::render_prusa(const std::string &key, bool bottom) const
|
||||||
if ((m_texture.get_id() == 0) || (m_texture.get_source() != filename))
|
if ((m_texture.get_id() == 0) || (m_texture.get_source() != filename))
|
||||||
{
|
{
|
||||||
#if ENABLE_COMPRESSED_TEXTURES
|
#if ENABLE_COMPRESSED_TEXTURES
|
||||||
if (!m_texture.load_from_svg_file(filename, true, true, max_tex_size))
|
if (!m_texture.load_from_svg_file(filename, true, true, true, max_tex_size))
|
||||||
#else
|
#else
|
||||||
if (!m_texture.load_from_svg_file(filename, true, max_tex_size))
|
if (!m_texture.load_from_svg_file(filename, true, max_tex_size))
|
||||||
#endif // ENABLE_COMPRESSED_TEXTURES
|
#endif // ENABLE_COMPRESSED_TEXTURES
|
||||||
|
@ -527,12 +531,14 @@ void Bed3D::render_prusa(const std::string &key, bool bottom) const
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if !ENABLE_COMPRESSED_TEXTURES
|
||||||
if (max_anisotropy > 0.0f)
|
if (max_anisotropy > 0.0f)
|
||||||
{
|
{
|
||||||
glsafe(::glBindTexture(GL_TEXTURE_2D, m_texture.get_id()));
|
glsafe(::glBindTexture(GL_TEXTURE_2D, m_texture.get_id()));
|
||||||
glsafe(::glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAX_ANISOTROPY_EXT, max_anisotropy));
|
glsafe(::glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAX_ANISOTROPY_EXT, max_anisotropy));
|
||||||
glsafe(::glBindTexture(GL_TEXTURE_2D, 0));
|
glsafe(::glBindTexture(GL_TEXTURE_2D, 0));
|
||||||
}
|
}
|
||||||
|
#endif // !ENABLE_COMPRESSED_TEXTURES
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!bottom)
|
if (!bottom)
|
||||||
|
|
|
@ -58,7 +58,7 @@ bool GLTexture::load_from_file(const std::string& filename, bool use_mipmaps)
|
||||||
}
|
}
|
||||||
|
|
||||||
#if ENABLE_COMPRESSED_TEXTURES
|
#if ENABLE_COMPRESSED_TEXTURES
|
||||||
bool GLTexture::load_from_svg_file(const std::string& filename, bool use_mipmaps, bool compress, unsigned int max_size_px)
|
bool GLTexture::load_from_svg_file(const std::string& filename, bool use_mipmaps, bool compress, bool apply_anisotropy, unsigned int max_size_px)
|
||||||
#else
|
#else
|
||||||
bool GLTexture::load_from_svg_file(const std::string& filename, bool use_mipmaps, unsigned int max_size_px)
|
bool GLTexture::load_from_svg_file(const std::string& filename, bool use_mipmaps, unsigned int max_size_px)
|
||||||
#endif // ENABLE_COMPRESSED_TEXTURES
|
#endif // ENABLE_COMPRESSED_TEXTURES
|
||||||
|
@ -70,7 +70,7 @@ bool GLTexture::load_from_svg_file(const std::string& filename, bool use_mipmaps
|
||||||
|
|
||||||
if (boost::algorithm::iends_with(filename, ".svg"))
|
if (boost::algorithm::iends_with(filename, ".svg"))
|
||||||
#if ENABLE_COMPRESSED_TEXTURES
|
#if ENABLE_COMPRESSED_TEXTURES
|
||||||
return load_from_svg(filename, use_mipmaps, compress, max_size_px);
|
return load_from_svg(filename, use_mipmaps, compress, apply_anisotropy, max_size_px);
|
||||||
#else
|
#else
|
||||||
return load_from_svg(filename, use_mipmaps, max_size_px);
|
return load_from_svg(filename, use_mipmaps, max_size_px);
|
||||||
#endif // ENABLE_COMPRESSED_TEXTURES
|
#endif // ENABLE_COMPRESSED_TEXTURES
|
||||||
|
@ -411,7 +411,7 @@ bool GLTexture::load_from_png(const std::string& filename, bool use_mipmaps)
|
||||||
}
|
}
|
||||||
|
|
||||||
#if ENABLE_COMPRESSED_TEXTURES
|
#if ENABLE_COMPRESSED_TEXTURES
|
||||||
bool GLTexture::load_from_svg(const std::string& filename, bool use_mipmaps, bool compress, unsigned int max_size_px)
|
bool GLTexture::load_from_svg(const std::string& filename, bool use_mipmaps, bool compress, bool apply_anisotropy, unsigned int max_size_px)
|
||||||
#else
|
#else
|
||||||
bool GLTexture::load_from_svg(const std::string& filename, bool use_mipmaps, unsigned int max_size_px)
|
bool GLTexture::load_from_svg(const std::string& filename, bool use_mipmaps, unsigned int max_size_px)
|
||||||
#endif // ENABLE_COMPRESSED_TEXTURES
|
#endif // ENABLE_COMPRESSED_TEXTURES
|
||||||
|
@ -455,6 +455,13 @@ bool GLTexture::load_from_svg(const std::string& filename, bool use_mipmaps, uns
|
||||||
glsafe(::glGenTextures(1, &m_id));
|
glsafe(::glGenTextures(1, &m_id));
|
||||||
glsafe(::glBindTexture(GL_TEXTURE_2D, m_id));
|
glsafe(::glBindTexture(GL_TEXTURE_2D, m_id));
|
||||||
#if ENABLE_COMPRESSED_TEXTURES
|
#if ENABLE_COMPRESSED_TEXTURES
|
||||||
|
if (apply_anisotropy)
|
||||||
|
{
|
||||||
|
GLfloat max_anisotropy = GLCanvas3DManager::get_gl_info().get_max_anisotropy();
|
||||||
|
if (max_anisotropy > 1.0f)
|
||||||
|
glsafe(::glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAX_ANISOTROPY_EXT, max_anisotropy));
|
||||||
|
}
|
||||||
|
|
||||||
if (compress && GLEW_EXT_texture_compression_s3tc)
|
if (compress && GLEW_EXT_texture_compression_s3tc)
|
||||||
glsafe(::glTexImage2D(GL_TEXTURE_2D, 0, GL_COMPRESSED_RGBA_S3TC_DXT5_EXT, (GLsizei)m_width, (GLsizei)m_height, 0, GL_RGBA, GL_UNSIGNED_BYTE, (const void*)data.data()));
|
glsafe(::glTexImage2D(GL_TEXTURE_2D, 0, GL_COMPRESSED_RGBA_S3TC_DXT5_EXT, (GLsizei)m_width, (GLsizei)m_height, 0, GL_RGBA, GL_UNSIGNED_BYTE, (const void*)data.data()));
|
||||||
else
|
else
|
||||||
|
|
|
@ -40,7 +40,7 @@ namespace GUI {
|
||||||
|
|
||||||
#if ENABLE_COMPRESSED_TEXTURES
|
#if ENABLE_COMPRESSED_TEXTURES
|
||||||
bool load_from_file(const std::string& filename, bool use_mipmaps, bool compress);
|
bool load_from_file(const std::string& filename, bool use_mipmaps, bool compress);
|
||||||
bool load_from_svg_file(const std::string& filename, bool use_mipmaps, bool compress, unsigned int max_size_px);
|
bool load_from_svg_file(const std::string& filename, bool use_mipmaps, bool compress, bool apply_anisotropy, unsigned int max_size_px);
|
||||||
#else
|
#else
|
||||||
bool load_from_file(const std::string& filename, bool use_mipmaps);
|
bool load_from_file(const std::string& filename, bool use_mipmaps);
|
||||||
bool load_from_svg_file(const std::string& filename, bool use_mipmaps, unsigned int max_size_px);
|
bool load_from_svg_file(const std::string& filename, bool use_mipmaps, unsigned int max_size_px);
|
||||||
|
@ -79,7 +79,7 @@ namespace GUI {
|
||||||
private:
|
private:
|
||||||
#if ENABLE_COMPRESSED_TEXTURES
|
#if ENABLE_COMPRESSED_TEXTURES
|
||||||
bool load_from_png(const std::string& filename, bool use_mipmaps, bool compress);
|
bool load_from_png(const std::string& filename, bool use_mipmaps, bool compress);
|
||||||
bool load_from_svg(const std::string& filename, bool use_mipmaps, bool compress, unsigned int max_size_px);
|
bool load_from_svg(const std::string& filename, bool use_mipmaps, bool compress, bool apply_anisotropy, unsigned int max_size_px);
|
||||||
#else
|
#else
|
||||||
bool load_from_png(const std::string& filename, bool use_mipmaps);
|
bool load_from_png(const std::string& filename, bool use_mipmaps);
|
||||||
bool load_from_svg(const std::string& filename, bool use_mipmaps, unsigned int max_size_px);
|
bool load_from_svg(const std::string& filename, bool use_mipmaps, unsigned int max_size_px);
|
||||||
|
|
Loading…
Reference in a new issue