mirror of https://github.com/axmolengine/axmol.git
Merge pull request #6028 from Dhilan007/develop_label
closed #4494:: Easier for set texture parameters of label's cache textures.
This commit is contained in:
commit
2e3b6b62de
|
@ -43,6 +43,7 @@ FontAtlas::FontAtlas(Font &theFont)
|
||||||
, _fontAscender(0)
|
, _fontAscender(0)
|
||||||
, _toForegroundListener(nullptr)
|
, _toForegroundListener(nullptr)
|
||||||
, _toBackgroundListener(nullptr)
|
, _toBackgroundListener(nullptr)
|
||||||
|
, _antialiasEnabled(true)
|
||||||
{
|
{
|
||||||
_font->retain();
|
_font->retain();
|
||||||
|
|
||||||
|
@ -274,6 +275,14 @@ bool FontAtlas::prepareLetterDefinitions(unsigned short *utf16String)
|
||||||
memset(_currentPageData, 0, _currentPageDataSize);
|
memset(_currentPageData, 0, _currentPageDataSize);
|
||||||
_currentPage++;
|
_currentPage++;
|
||||||
auto tex = new Texture2D;
|
auto tex = new Texture2D;
|
||||||
|
if (_antialiasEnabled)
|
||||||
|
{
|
||||||
|
tex->setAntiAliasTexParameters();
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
tex->setAliasTexParameters();
|
||||||
|
}
|
||||||
tex->initWithData(_currentPageData, _currentPageDataSize,
|
tex->initWithData(_currentPageData, _currentPageDataSize,
|
||||||
pixelFormat, CacheTextureWidth, CacheTextureHeight, Size(CacheTextureWidth,CacheTextureHeight) );
|
pixelFormat, CacheTextureWidth, CacheTextureHeight, Size(CacheTextureWidth,CacheTextureHeight) );
|
||||||
addTexture(tex,_currentPage);
|
addTexture(tex,_currentPage);
|
||||||
|
@ -349,4 +358,28 @@ const Font * FontAtlas::getFont() const
|
||||||
return _font;
|
return _font;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void FontAtlas::setAliasTexParameters()
|
||||||
|
{
|
||||||
|
if (_antialiasEnabled)
|
||||||
|
{
|
||||||
|
_antialiasEnabled = false;
|
||||||
|
for (const auto & tex : _atlasTextures)
|
||||||
|
{
|
||||||
|
tex.second->setAliasTexParameters();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void FontAtlas::setAntiAliasTexParameters()
|
||||||
|
{
|
||||||
|
if (! _antialiasEnabled)
|
||||||
|
{
|
||||||
|
_antialiasEnabled = true;
|
||||||
|
for (const auto & tex : _atlasTextures)
|
||||||
|
{
|
||||||
|
tex.second->setAntiAliasTexParameters();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
NS_CC_END
|
NS_CC_END
|
||||||
|
|
|
@ -98,6 +98,18 @@ public:
|
||||||
*/
|
*/
|
||||||
void purgeTexturesAtlas();
|
void purgeTexturesAtlas();
|
||||||
|
|
||||||
|
/** sets font texture parameters:
|
||||||
|
- GL_TEXTURE_MIN_FILTER = GL_LINEAR
|
||||||
|
- GL_TEXTURE_MAG_FILTER = GL_LINEAR
|
||||||
|
*/
|
||||||
|
void setAntiAliasTexParameters();
|
||||||
|
|
||||||
|
/** sets font texture parameters:
|
||||||
|
- GL_TEXTURE_MIN_FILTER = GL_NEAREST
|
||||||
|
- GL_TEXTURE_MAG_FILTER = GL_NEAREST
|
||||||
|
*/
|
||||||
|
void setAliasTexParameters();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
|
||||||
void relaseTextures();
|
void relaseTextures();
|
||||||
|
@ -118,6 +130,7 @@ private:
|
||||||
int _fontAscender;
|
int _fontAscender;
|
||||||
EventListenerCustom* _toBackgroundListener;
|
EventListenerCustom* _toBackgroundListener;
|
||||||
EventListenerCustom* _toForegroundListener;
|
EventListenerCustom* _toForegroundListener;
|
||||||
|
bool _antialiasEnabled;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -243,6 +243,7 @@ public:
|
||||||
|
|
||||||
virtual const Size& getContentSize() const override;
|
virtual const Size& getContentSize() const override;
|
||||||
|
|
||||||
|
FontAtlas* getFontAtlas() { return _fontAtlas; }
|
||||||
/** Listen "come to background" message
|
/** Listen "come to background" message
|
||||||
It only has effect on Android.
|
It only has effect on Android.
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -432,6 +432,7 @@ Texture2D::Texture2D()
|
||||||
, _hasPremultipliedAlpha(false)
|
, _hasPremultipliedAlpha(false)
|
||||||
, _hasMipmaps(false)
|
, _hasMipmaps(false)
|
||||||
, _shaderProgram(nullptr)
|
, _shaderProgram(nullptr)
|
||||||
|
, _antialiasEnabled(true)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -621,16 +622,29 @@ bool Texture2D::initWithMipmaps(MipmapInfo* mipmaps, int mipmapsNum, PixelFormat
|
||||||
|
|
||||||
if (mipmapsNum == 1)
|
if (mipmapsNum == 1)
|
||||||
{
|
{
|
||||||
glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR );
|
glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, _antialiasEnabled ? GL_LINEAR : GL_NEAREST);
|
||||||
}else
|
}else
|
||||||
{
|
{
|
||||||
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR_MIPMAP_NEAREST);
|
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, _antialiasEnabled ? GL_LINEAR_MIPMAP_NEAREST : GL_NEAREST_MIPMAP_NEAREST);
|
||||||
}
|
}
|
||||||
|
|
||||||
glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR );
|
glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, _antialiasEnabled ? GL_LINEAR : GL_NEAREST );
|
||||||
glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE );
|
glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE );
|
||||||
glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE );
|
glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE );
|
||||||
|
|
||||||
|
#if CC_ENABLE_CACHE_TEXTURE_DATA
|
||||||
|
if (_antialiasEnabled)
|
||||||
|
{
|
||||||
|
TexParams texParams = {(GLuint)(_hasMipmaps?GL_LINEAR_MIPMAP_NEAREST:GL_LINEAR),GL_LINEAR,GL_NONE,GL_NONE};
|
||||||
|
VolatileTextureMgr::setTexParameters(this, texParams);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
TexParams texParams = {(GLuint)(_hasMipmaps?GL_NEAREST_MIPMAP_NEAREST:GL_NEAREST),GL_NEAREST,GL_NONE,GL_NONE};
|
||||||
|
VolatileTextureMgr::setTexParameters(this, texParams);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
CHECK_GL_ERROR_DEBUG(); // clean possible GL error
|
CHECK_GL_ERROR_DEBUG(); // clean possible GL error
|
||||||
|
|
||||||
// Specify OpenGL texture image
|
// Specify OpenGL texture image
|
||||||
|
@ -1252,6 +1266,18 @@ void Texture2D::setTexParameters(const TexParams &texParams)
|
||||||
|
|
||||||
void Texture2D::setAliasTexParameters()
|
void Texture2D::setAliasTexParameters()
|
||||||
{
|
{
|
||||||
|
if (! _antialiasEnabled)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
_antialiasEnabled = false;
|
||||||
|
|
||||||
|
if (_name == 0)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
GL::bindTexture2D( _name );
|
GL::bindTexture2D( _name );
|
||||||
|
|
||||||
if( ! _hasMipmaps )
|
if( ! _hasMipmaps )
|
||||||
|
@ -1272,6 +1298,18 @@ void Texture2D::setAliasTexParameters()
|
||||||
|
|
||||||
void Texture2D::setAntiAliasTexParameters()
|
void Texture2D::setAntiAliasTexParameters()
|
||||||
{
|
{
|
||||||
|
if ( _antialiasEnabled )
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
_antialiasEnabled = true;
|
||||||
|
|
||||||
|
if (_name == 0)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
GL::bindTexture2D( _name );
|
GL::bindTexture2D( _name );
|
||||||
|
|
||||||
if( ! _hasMipmaps )
|
if( ! _hasMipmaps )
|
||||||
|
|
|
@ -436,6 +436,8 @@ protected:
|
||||||
GLProgram* _shaderProgram;
|
GLProgram* _shaderProgram;
|
||||||
|
|
||||||
static const PixelFormatInfoMap _pixelFormatInfoTables;
|
static const PixelFormatInfoMap _pixelFormatInfoTables;
|
||||||
|
|
||||||
|
bool _antialiasEnabled;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue