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