文档

有效地转换对象

移动对象,例如通过旋转,需要转换定义对象的数据。您可以利用图形硬件可以对数据应用转换这一事实来提高性能。然后可以避免将转换后的数据发送到呈现程序。相反,你只发送4乘4变换矩阵。

要实现此方法的性能优势,请使用hgtransform函数对要移动的对象进行分组。

下面的例子定义一个球体并使用两种技术旋转它来比较性能:

  • 旋转函数转换球体的数据,并在每次调用时将数据发送到渲染器线程drawnow

  • hgtransform函数将相同旋转的变换矩阵发送给渲染线程。

性能较差的代码 性能更好的代码

当对象数据很大时,更新瓶颈成为限制因素。

%使用rotate图[x,y,z] =球面(270);S = surf(x,y,z,z,“EdgeColor”“没有”);轴vis3dAng = 1:360 rotate(s,[1,1,1],1) drawnow结束

使用hgtransform在瓶颈的呈现器端应用转换。

%使用hgtransform图ax =坐标轴;[x,y,z] =球面(270);转换对象包含曲面GRP = hgtransform(“父”、ax);S = surf(ax,x,y,z,z,“父”grp,...“EdgeColor”“没有”);(3)网格视图vis3d%应用变换抽搐Ang = linspace(0,2*pi,360) tm = makehgtform(“axisrotate”(1, 1, 1), ang);grp。矩阵= tm;drawnow结束toc
这个话题有帮助吗?