Вопрос
Я заметил, что матрица преобразования 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 */