Domanda

Ho notato che la matrice di trasformazione OpenVG viene ignorata dalla routine di rendering del testo e non riesco a controllare la posizione del testo con essa manualmente con VG_Glyph_origin parameter.

Sto implementazione di un grafico a scena.Ho scoperto che posso usare vgGetMatrix, leggi i componenti 6 e 7 della matrice di trasformazione 3x3 corrente e impostare VG_GLYPH_ORIGIN su tali valori prima di disegnare un blocco di testo.Ciò consente all'origine del testo di essere posizionato nel luogo corretto, ma il testo è ancora visualizzato sempre da sinistra a destra.

Tuttavia, questo stesso non mi consente di fare altre trasformazioni, come la rotazione.Sono sorpreso perché il testo è composto da VGPaths e sono effettivamente trasformati

C'è un modo per rendere il testo ruotato con OpenVG 1.1?O dovrei ignorare la funzionalità del testo da OpenVG 1.1 e disegnare manualmente le lettere come singoli percorsi o immagini?

È stato utile?

Soluzione

All the draw functions use a different user->surface matrix:

  • vgDrawPath uses VG_MATRIX_PATH_USER_TO_SURFACE
  • vgDrawImage uses VG_MATRIX_IMAGE_USER_TO_SURFACE
  • vgDrawGlyph/vgDrawGlyphs use VG_MATRIX_GLYPH_USER_TO_SURFACE

By default, all of the matrix functions (vgTranslate, vgRotate, vgLoadMatrix, etc) operate on VG_MATRIX_PATH_USER_TO_SURFACE. To change the active matrix, call vgSeti with VG_MATRIX_MODE as the first argument:

vgSeti(VG_MATRIX_MODE, VG_MATRIX_GLYPH_USER_TO_SURFACE);
/* now vgTranslate, vgRotate, etc will operate on VG_MATRIX_GLYPH_USER_TO_SURFACE */
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top