主要内容

转换对象有效

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

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

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

  • 旋转函数转换球体的数据,并在每次调用时将数据发送给呈现程序线程drawnow

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

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

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

%使用旋转图[x,y,z] =球体(270);s =冲浪(x, y, z, z,“EdgeColor”“没有”);轴vis3dang = 1:360旋转(年代,(1,1,1),1)drawnow结束

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

%使用hgtransform图ax =轴;[x, y, z] =球(270);% Transform对象包含表面grp = hgtransform (“父”、ax);s =冲浪(ax, x, y, z, z,“父”grp,...“EdgeColor”“没有”);(3)网格视图vis3d%应用转换抽搐= linspace(0,2*pi,360)“axisrotate”(1, 1, 1), ang);grp。矩阵= tm;drawnow结束toc