使用Renderscript绘制旋转的文本

时间:2012-03-16 12:50:59

标签: android text orientation drawtext renderscript

我正在尝试使用带有Renderscript的rsgDrawText显示旋转90度的文本。 Font类和rsgDrawText调用似乎不支持任何文本方向。 我无法纵向/横向旋转活动,所以我想找到另一种方法来实现这一目标。 我通过将rsMatrixRotate用于顶点着色器尝试了一些实验,但文本似乎不受此转换的影响。 我正在使用透明表面,它只在另一个活动的顶部使用Renderscript绘制文本。因此,改变表面方向本身的任何事情都可能正常。 使用Renderscript将文本旋转90度的最佳方法是什么?

1 个答案:

答案 0 :(得分:2)

您可以使用glMatrixRotate创建旋转矩阵,然后使用rsgProgramVertexLoadModelMatrix将该矩阵作为模型矩阵加载。我怀疑你在实验中错过了后一部分。

例如,这个简单的renderscript将绘制“Hello!”在屏幕上的(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;
}