2014-07-13 26 views
5

sto generando il mio carattere in modo dinamico in base alla percentuale altezza dello schermo e impostare percentuali (ovviamente moltiplicato per la densità di in futuro.LibGDX FreeType carattere sfocata

Alcune note. sto leggendo da un file di sistema organizzato di negoziazione. Utilizzando l'ultima versione di LibGDX (versione 1.2.0)

ho il seguente problema: (Large interruzioni nel carattere e sembra molto sfocata, ma solo su medioGrande e piccolo sembrano molto tagliente.)

Bad font

mie preimpostate dimensioni dei caratteri:

//Font sizes, small, med, large as a percentage of the screen. 
    public static float 
      FONT_SIZE_LARGE = 0.175f, 
      FONT_SIZE_MEDIUM = 0.06f, 
      FONT_SIZE_SMALL = 0.04f; 

mio generatore di carattere impostazioni

FreeTypeFontGenerator.FreeTypeFontParameter parameter = new FreeTypeFontGenerator.FreeTypeFontParameter(); 
     FreeTypeFontGenerator generator; 
this.generator = new FreeTypeFontGenerator(Gdx.files.internal(filename)); 

Creazione del font effettivo:

//Create a new font and add it to available font sizes. 
public BitmapFont createFont(float size, float color) 
{ 
    this.parameter.size = Math.round(size); 
    BitmapFont bitmapFont = generator.generateFont(parameter); 
    bitmapFont.setColor(color); 
    listOfFonts.add(new FontStorage(bitmapFont, size)); 
    return bitmapFont; 
} 

Ora ho provato unpoche cose su diversi dispositivi ma hanno ancora lo stesso problema. Sto pensando che potrebbe essere perché non è il potere di 2? (Il carattere deve essere pari a 2 per essere pari?)

I tipi di carattere sono disegnati su molte risoluzioni dello schermo diverse, quindi non è possibile utilizzare tre caratteri bitmap di una certa dimensione.

Qualcuno può aiutarmi qui?

+0

Se si utilizza un BitmapFont singolo in varie dimensioni, è necessario utilizzare mipmapping per farlo sembrare buono a tutte le dimensioni. E probabilmente MipMapLinearLinear per minFactor. – Tenfour04

+0

Sto usando più font di dimensioni bitmap per adattarsi esattamente allo schermo, ma puoi collegare o spiegare questo? –

+0

Oh, scusa, ho frainteso quello che stai facendo. La procedura di Mipmapping non è necessaria nel modo in cui lo stai facendo. Non penso che il potere di due sia il tuo problema. Per quanto ne sappia, non-POT ti mette solo a rischio di prestazioni più lente (e probabilmente pure trame nere su alcuni dispositivi se sei su una vecchia versione di libgdx e usando OpenGL ES 1.0/1.1). Non ho usato molto il generatore di font, quindi non so cos'altro da suggerire. – Tenfour04

risposta

3

Ho capito, ci sono 3 impostazioni che è necessario impostare se si desidera i caratteri finali chiari.

I primi due sono appena prima di crearlo da file (può essere organizzato di negoziazione o TTF) e sono:

//Make sure you ceil for your current resolution otherwise you'll be nasty cut-offs. 
this.parameter.size = (int)Math.ceil(size); 
this.generator.scaleForPixelHeight((int)Math.ceil(size)); 

Il passo successivo è la creazione di un magnifichi e minifies filtri. (Per il ridimensionamento, se lo vuoi anche tu, non lo sono perché disegno quasi pixel perfetto). Ecco il codice comunque:

this.generator = new FreeTypeFontGenerator(Gdx.files.internal(filename)); 
this.parameter.minFilter = Texture.TextureFilter.Nearest; 
this.parameter.magFilter = Texture.TextureFilter.MipMapLinearNearest; 

Questo vi darà un bel carattere super nitido su qualsiasi risoluzione. GL.

+0

segna la tua risposta come accettata :) –

+0

Non posso per un altro giorno. –

+0

Questo non ha funzionato per me ... – JavaDev