рисование повернутого текста с помощью Renderscript - PullRequest
0 голосов
/ 16 марта 2012

Я пытаюсь отобразить текст, повернутый на 90 градусов, используя rsgDrawText с Renderscript. Класс Font и вызов rsgDrawText не поддерживают текстовую ориентацию. Я не могу повернуть действие в портретной / альбомной ориентации, поэтому Ineed, чтобы найти другой способ достичь этого. Я попытался провести несколько экспериментов с использованием rsMatrixRotate для вершинного шейдера, но, похоже, это преобразование не затронуло текст. Я использую прозрачную поверхность, которая рисует только текст с Renderscript поверх другого действия. Так что что-нибудь вроде изменения самой ориентации поверхности, вероятно, будет работать нормально. Как лучше всего рисовать текст, повернутый на 90 градусов с помощью Renderscript?

1 Ответ

2 голосов
/ 18 марта 2012

Вы можете использовать glMatrixRotate для создания матрицы вращения, а затем использовать rsgProgramVertexLoadModelMatrix для загрузки этой матрицы в качестве матрицы модели. Я подозреваю, что это последняя часть, которую вы пропустили в своих экспериментах.

Например, этот простой рендер-скрипт нарисует «Привет!» на (200, 200) на экране, а затем снова повернул на 90 градусов вокруг нижнего левого угла текста.

int root() {
    rsgClearColor(0.0, 0.0, 0.0, 0.0);
    rsgFontColor(1.0, 1.0, 1.0, 1.0);
    rsgDrawText("Hello!", 200, 200);

    rs_matrix4x4 matrix;
    rsMatrixLoadIdentity(&matrix);
    rsMatrixTranslate(&matrix, 200, 200, 0);
    rsMatrixRotate(&matrix, 90, 0, 0, 1);
    rsgProgramVertexLoadModelMatrix(&matrix);
    rsgDrawText("Hello!", 0, 0);

    return 0;
}
...