Pregunta
He notado que la rutina de representación de texto ignora la matriz de transformación OpenVG y no puedo controlar la posición del texto manualmente con VG_GLYPH_ORIGIN parameter
.
Estoy implementando un gráfico de escena.Descubrí que puedo usar vgGetMatrix
, lea los componentes 6 y 7 de la matriz de transformación 3x3 actual y establezca VG_GLYPH_ORIGIN
a esos valores antes de dibujar un bloque de texto.Esto permite que el origen del texto se coloque en el lugar correcto, pero el texto siempre se muestra de izquierda a derecha.
Sin embargo, esto en sí no me permite realizar otras transformaciones, como la rotación.Me sorprende porque el texto está compuesto de VGPath
s y de hecho se transforman
¿Hay alguna manera de rotar el texto con OpenVG 1.1?¿O debería ignorar la funcionalidad de texto de OpenVG 1.1 y dibujar las letras como rutas individuales o imágenes manualmente?
Solución
Todas las funciones de dibujo utilizan una matriz de usuario->superficie diferente:
vgDrawPath
usosVG_MATRIX_PATH_USER_TO_SURFACE
vgDrawImage
usosVG_MATRIX_IMAGE_USER_TO_SURFACE
vgDrawGlyph
/vgDrawGlyphs
usarVG_MATRIX_GLYPH_USER_TO_SURFACE
De forma predeterminada, todas las funciones matriciales (vgTranslate
, vgRotate
, vgLoadMatrix
, etc) operar en VG_MATRIX_PATH_USER_TO_SURFACE
.Para cambiar la matriz activa, llame vgSeti
con VG_MATRIX_MODE
como primer argumento:
vgSeti(VG_MATRIX_MODE, VG_MATRIX_GLYPH_USER_TO_SURFACE);
/* now vgTranslate, vgRotate, etc will operate on VG_MATRIX_GLYPH_USER_TO_SURFACE */