0

Renderscript で rsgDrawText を使用して、90 度回転したテキストを表示しようとしています。Font クラスと rsgDrawText 呼び出しは、テキストの向きをサポートしていないようです。アクティビティを縦向き/横向きに回転させることはできないため、これを実現する別の方法を見つける必要があります。頂点シェーダーに rsMatrixRotate を使用していくつかの実験を試みましたが、テキストはこの変換の影響を受けないようです。別のアクティビティの上に Renderscript を使用してテキストのみを描画する透明な表面を使用しています。したがって、サーフェスの向き自体を変更するようなことは、おそらくうまくいくでしょう。Renderscript で 90 度回転したテキストを描画するにはどうすればよいでしょうか?

4

1 に答える 1

2

を使用glMatrixRotateして回転マトリックスを作成し、 を使用rsgProgramVertexLoadModelMatrixしてそのマトリックスをモデル マトリックスとしてロードできます。あなたが実験で見逃したのは、この後半部分だと思います。

たとえば、この単純なレンダー スクリプトは「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;
}
于 2012-03-18T11:47:18.910 に答える