Вопрос

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

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

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

Есть ли способ заставить текст поворачиваться с помощью OpenVG 1.1?Или я должен игнорировать текстовую функциональность из OpenVG 1.1 и рисовать буквы в виде отдельных контуров или изображений вручную?

Это было полезно?

Решение

Все функции рисования используют другую пользовательскую матрицу->surface matrix:

  • 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 */
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top