VG_LINE_TO_ABS および VG_MOVE_TO_ABS によるパス セグメントの可視性の変更について質問があります
まず、OpenVg パスを作成および破棄するにはリソースが高価であり、パスを作成してから変更する方がはるかに高速であると言われました。
したがって、私のInit関数には
vg3DPath = vgCreatePath(VG_PATH_FORMAT_STANDARD, VG_PATH_DATATYPE_F, 1.0f, 0.0f, seg_pts, seg_pts * 2, VG_PATH_CAPABILITY_ALL); vgAppendPathData(vg3DPath, seg_pts, (const VGubyte *)vg3DPathSegments, points);
そして、私のDraw関数には、
vgModifyPathCoords(vg3DPath, 0, seg_pts, ポイント);
ポイントの数、seg_ptsは変更されず、ポイント配列 (各ポイントの X および Y 座標のサイズで2*seg_ptsとして定義される) に格納されるポイントの位置のみが変更されます。
これはうまくいきます。
私の問題は、vgModifyPathCoords()がセグメント記述配列vg3DPathSegments ( VG_MOVE_TO_ABS、VG_LINE_TO_ABS ... VG_LINE_TO_ABS、VG_CLOSE_PATH の場合、サイズがseg_pts+1 として定義されている) を取らないことです。
一部のセグメントの可視性を変更したい場合。つまり、VG_LINE_TO_ABS の一部を VG_MOVE_TO_ABS に変更します。これをvgModifyPathCoords(..)に渡すことはできません。
私の最初の考えは、クラスのプライベート変数であるvg3DPathSegmentsを作成することでした。その値を変更すると、パス内のこれらのプロパティが自動的に変更されますが、const として渡されるため、これは機能しません。
パスのこれらのプロパティを変更するにはどうすればよいですか? より良いアプローチはありますか?
言語は C++11 プラットフォームは Imx6、Yocto
どうもありがとうございました-D