我注意到文本渲染例程完全忽略了OpenVG转换矩阵,我无法使用VG_GLYPH_ORIGIN parameter
手动控制文本位置。
我正在实施一个场景图。我发现我可以使用vgGetMatrix
,读取当前3x3变换矩阵的组件6和7,并在绘制文本块之前将VG_GLYPH_ORIGIN
设置为这些值。这允许将文本原点放置在正确的位置,但文本仍然始终从左向右显示。
然而,这本身并不能让我做任何其他的转换,比如旋转。我很惊讶因为文本是由VGPath
组成的,而且它们确实被转换了
有没有办法让文字随OpenVG 1.1一起旋转?或者我应该忽略OpenVG 1.1中的文本功能并手动将字母绘制为单独的路径或图像?
答案 0 :(得分: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 */