2011-02-16 81 views
0

我注意到OpenVG转换矩阵被文本渲染例程忽略,我无法用VG_GLYPH_ORIGIN parameter手动控制文本位置。带OpenVG的旋转文本

我正在实施一个场景图。我发现我可以使用vgGetMatrix,读取当前3x3变换矩阵的组件6和7,并在绘制文本块之前将VG_GLYPH_ORIGIN设置为那些值。这样可以将文本原点放置在正确的位置,但文本仍然始终显示为从左到右。

但是,这本身并不能让我做任何其他转换,如旋转。我很惊讶,因为文本是由VGPath组成的,它们确实转换了

有没有办法让文本在OpenVG 1.1中旋转?或者我应该忽略来自OpenVG 1.1的文本功能并手动将这些字母作为单独的路径或图像绘制?

回答

1

所有拉制功能使用不同的用户>表面矩阵:

  • vgDrawPath使用VG_MATRIX_PATH_USER_TO_SURFACE
  • vgDrawImage使用VG_MATRIX_IMAGE_USER_TO_SURFACE
  • vgDrawGlyph/vgDrawGlyphs使用VG_MATRIX_GLYPH_USER_TO_SURFACE

缺省情况下,所有的矩阵函数(vgTranslate,vgRotate,vgLoadMatrix等)在VG_MATRIX_PATH_USER_TO_SURFACE上操作。要更改有效矩阵,请拨打vgSeti并将VG_MATRIX_MODE作为第一个参数:

vgSeti(VG_MATRIX_MODE, VG_MATRIX_GLYPH_USER_TO_SURFACE); 
/* now vgTranslate, vgRotate, etc will operate on VG_MATRIX_GLYPH_USER_TO_SURFACE */