inzwischen habe ich es hin bekommen, Freetype Glyphen in eine Atlastextur zu rendern und mit Hilfe eines Spritebatchers (danke Schrompf) zu rendern. Soweit so gut. Nur leider ist es z.Z. so, dass die erstelten Texturen und die resultierenden Sprites im Freetype Style generiert wreden, d.h. der Ursprung ist die linke, obere Ecke ... Ich verwende Systemweit aber die linke untere Ecke als Ursprung.
Nun dachte ich mir, bist Du Fuchs und rotierst jedes Glyphbitmap bevor Du es in die Atlastextur packst. Ganz einfach, klappt auch bestens. Nur habe ich nun Probleme mit der Ausrichtung (hat vorher bestens geklappt) an der Baseline. Die Textur ist vertikal geflipt (auf x-Achse), die Ausrichtungsdaten die ich über Freetype bestimmt habe, orientieren sich natürich noch am Ursprung und erzeugen nun total verschobene Glyphen.
Code: Alles auswählen
// Bestimmumg der ursprünglichen Daten aus der ft-bitmap
glyph.setWidth(ft_bitmap_width);
glyph.setHeight(ft_bitmap_rows);
glyph.setOffsetX((float)ft_glyph_left);
glyph.setOffsetY((float)ft_glyph_top);
glyph.setAdvanceX(advanceX);
glyph.setAdvanceY(advanceY);
// urpüngliche sprite kalkulation
float x0 = pen.m_fX + glyph.getOffsetX();
float y0 = pen.m_fY + glyph.getOffsetY();
float x1 = x0 + glyph.getWidth();
float y1 = y0 - glyph.getHeight();
float s0 = region.getU();
float s1 = region.getU2();
float t0 = region.getV();
float t1 = region.getV2();
Vertex vertices[] = {
Vertex( x0, y0, 0.0f, s0, t0),
Vertex( x0, y1, 0.0f, s0, t1),
Vertex( x1, y1, 0.0f, s1, t1),
Vertex( x1, y1, 0.0f, s1, t1),
Vertex( x1, y0, 0.0f, s1, t0),
Vertex( x0, y0, 0.0f, s0, t0)
};
Irgendwie dreh ich mich hier im Kreis und finde Keine Lösung. Kann mir jemand von Euch einen Schlag auf den Hinterkopf geben? Denke ich irgendwie wieder einmal völlig verquer?