0

我注意到文本渲染例程完全忽略了 OpenVG 转换矩阵,我无法使用 VG_GLYPH_ORIGIN 手动控制文本位置parameter

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

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

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

4

1 回答 1

1

所有绘图函数都使用不同的 user->surface 矩阵:

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

默认情况下,所有矩阵函数(vgTranslatevgRotatevgLoadMatrix等)都在VG_MATRIX_PATH_USER_TO_SURFACE. 要更改活动矩阵,请调用vgSetiwithVG_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 */
于 2011-03-12T17:36:03.583 回答