Pergunta
Eu tenho notado que o OpenVG matriz de transformação é ignorado pelo processamento de texto de rotina em tudo e eu não posso controlar a posição do texto com ele manualmente com VG_GLYPH_ORIGIN parameter
.
Eu sou a implementação de um grafo de cena.Eu descobri que eu posso usar vgGetMatrix
, leia componentes 6 e 7 do corrente 3x3 matriz de transformação e conjunto VG_GLYPH_ORIGIN
a esses valores antes de desenhar um bloco de texto.Isto permite que o texto de origem para ser colocado no lugar correto, mas o texto ainda é exibida sempre da esquerda para a direita.
No entanto, isso por si só não me permitem fazer quaisquer outras transformações, como a rotação.Eu estou surpreso porque o texto é composto de VGPath
s e eles são, de fato, transformado
Existe uma maneira de tornar o texto girado com OpenVG 1.1?Ou devo ignorar a funcionalidade de texto a partir de OpenVG 1.1 e desenhar as letras como caminhos individuais ou imagens manualmente?
Solução
Todas as funções de desenho de utilizar um outro usuário->superfície de matriz:
vgDrawPath
usaVG_MATRIX_PATH_USER_TO_SURFACE
vgDrawImage
usaVG_MATRIX_IMAGE_USER_TO_SURFACE
vgDrawGlyph
/vgDrawGlyphs
utilizaçãoVG_MATRIX_GLYPH_USER_TO_SURFACE
Por padrão, todos da matriz de funções (vgTranslate
, vgRotate
, vgLoadMatrix
, etc) operam VG_MATRIX_PATH_USER_TO_SURFACE
.Para alterar a matriz ativa, chamada de vgSeti
com VG_MATRIX_MODE
como o primeiro argumento:
vgSeti(VG_MATRIX_MODE, VG_MATRIX_GLYPH_USER_TO_SURFACE);
/* now vgTranslate, vgRotate, etc will operate on VG_MATRIX_GLYPH_USER_TO_SURFACE */