Frage
Mir ist aufgefallen, dass die OpenVG-Transformationsmatrix von der Textrendering-Routine überhaupt ignoriert wird und ich die Textposition damit nicht manuell mit VG_GLYPH_ORIGIN steuern kann parameter
.
Ich implementieren einen Szenengraphen.Ich habe herausgefunden, dass ich es verwenden kann vgGetMatrix
, lesen Sie die Komponenten 6 und 7 der aktuellen 3x3-Transformationsmatrix und legen Sie sie fest VG_GLYPH_ORIGIN
auf diese Werte, bevor Sie einen Textblock zeichnen.Dadurch kann der Textursprung an der richtigen Stelle platziert werden, der Text wird aber trotzdem immer von links nach rechts angezeigt.
Dies allein ermöglicht mir jedoch keine anderen Transformationen, wie etwa die Rotation.Ich bin überrascht, weil der Text aus zusammengesetzt ist VGPath
s und sie sind tatsächlich verwandelt
Gibt es eine Möglichkeit, den Text mit OpenVG 1.1 zu drehen?Oder sollte ich die Textfunktionalität von OpenVG 1.1 ignorieren und die Buchstaben manuell als einzelne Pfade oder Bilder zeichnen?
Lösung
Alle Zeichenfunktionen verwenden eine andere Benutzer->Oberflächenmatrix:
vgDrawPath
VerwendetVG_MATRIX_PATH_USER_TO_SURFACE
vgDrawImage
VerwendetVG_MATRIX_IMAGE_USER_TO_SURFACE
vgDrawGlyph
/vgDrawGlyphs
verwendenVG_MATRIX_GLYPH_USER_TO_SURFACE
Standardmäßig sind alle Matrixfunktionen (vgTranslate
, vgRotate
, vgLoadMatrix
, usw.) operieren VG_MATRIX_PATH_USER_TO_SURFACE
.Um die aktive Matrix zu ändern, rufen Sie an vgSeti
mit VG_MATRIX_MODE
als erstes Argument:
vgSeti(VG_MATRIX_MODE, VG_MATRIX_GLYPH_USER_TO_SURFACE);
/* now vgTranslate, vgRotate, etc will operate on VG_MATRIX_GLYPH_USER_TO_SURFACE */