Повернутый текст с OpenVG

Я заметил, что матрица преобразования OpenVG вообще игнорируется подпрограммой рендеринга текста, и я не могу контролировать положение текста с помощью нее вручную с помощью VG_GLYPH_ORIGIN parameter,

Я реализую граф сцены. Я узнал, что я могу использовать vgGetMatrixпрочитайте компоненты 6 и 7 текущей матрицы преобразования 3х3 и установите VG_GLYPH_ORIGIN к этим значениям, прежде чем рисовать блок текста. Это позволяет расположить источник текста в правильном месте, но текст по-прежнему всегда отображается слева направо.

Однако само по себе это не позволяет мне делать какие-либо другие преобразования, например вращение. Я удивлен, потому что текст состоит из VGPathи они действительно преобразились

Есть ли способ сделать текст повернутым с OpenVG 1.1? Или я должен игнорировать функциональность текста из OpenVG 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

По умолчанию все функции матрицы (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 */
Другие вопросы по тегам