Main Content

屏幕更新

MATLAB 图形系统

MATLAB® 图形是通过执行多个线程实现的。下图演示了主线程和渲染器线程在更新过程中如何交互。MATLAB 端包含图形模型,它描述了由图形硬件渲染的几何图。渲染器端在其内存系统中含有几何图。图形硬件可以渲染屏幕而不会阻止 MATLAB 执行。

当图形模型改变时,这些更新必须传递到图形硬件。发送更新可能是瓶颈,因为图形硬件并非支持所有的 MATLAB 数据类型。更新过程必须将数据转换到正确形式。

当几何图已在图形硬件内存中时,可以通过使用该数据并尽量减少更新的数据传送以实现性能优势。

管理更新

更新包含以下步骤:

  • 收集更新到屏幕的变更,如属性变化和添加的对象。

  • 更新在图形模型中的依赖关系。

  • 将这些更新发送到渲染器。

  • 等待渲染器在返回执行 MATLAB 之前接受这些参数。

通过调用 drawnow 函数启动更新。当渲染器接受更新时 drawnow 完成执行,这可能在渲染器完成更新屏幕之前发生。

显式更新

在函数执行过程中,将图形对象添加到图窗或改变现有对象的属性不一定会让屏幕立即更新。当需要更新的图形发生变化时,会出现更新过程,代码:

  • 调用 drawnowpausefigure 或其他实际上引起更新的函数(请参阅 drawnow)。

  • 查询其值依赖于其他属性的属性(请参阅自动计算属性)。

  • 完成执行并将控制返回给 MATLAB 提示符或调试器。