有效地转换对象
移动对象,例如通过旋转,需要转换定义对象的数据。您可以利用图形硬件可以对数据应用转换这一事实来提高性能。然后可以避免将转换后的数据发送到呈现程序。相反,你只发送4乘4变换矩阵。
要实现此方法的性能优势,请使用hgtransform
函数对要移动的对象进行分组。
下面的例子定义一个球体并使用两种技术旋转它来比较性能:
的
旋转
函数转换球体的数据,并在每次调用时将数据发送到渲染器线程drawnow
.的
hgtransform
函数将相同旋转的变换矩阵发送给渲染线程。
性能较差的代码 | 性能更好的代码 |
---|---|
当对象数据很大时,更新瓶颈成为限制因素。 %使用rotate图[x,y,z] =球面(270);S = surf(x,y,z,z,“EdgeColor”,“没有”);轴vis3d为Ang = 1:360 rotate(s,[1,1,1],1) drawnow结束 |
使用 %使用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 |
这个话题有帮助吗?