【问题标题】:MATLAB Figure Rendering: OpenGL vs. Painters?MATLAB 图形渲染:OpenGL 与 Painters?
【发布时间】:2015-11-16 18:29:16
【问题描述】:

对于 MATLAB 图形使用哪个渲染器或何时重要,我一无所知,但我遇到了一些确实重要的示例:

plot(0,0,'ko','markersize',50,'linewidth',8);
set(gcf,'renderer','opengl');
set(gcf,'renderer','painters');

左=OpenGL,右=画家:

(运行 Windows 7 Professional 和 MATLAB R2015b)

使用 OpenGL 渲染器是否有时会产生比 Painters 更好的结果?一般来说,这两个渲染器有何不同?

【问题讨论】:

  • 有趣的问题。作为一个图形渲染的外行,经常需要使用 MATLAB 生成出版质量的图形,对此问题的明确答案会很好。
  • 阅读here。画家通常更快。 OpenGL 对 3-D 绘图的质量有很大影响,尤其是在您使用照明或透明度,或者如果您有 Retina 显示器的情况下。
  • 有没有办法将“画家”设置为所有情节的默认值?在 R2016a 中,默认值为“opengl”。编辑:找到答案:将set(0, 'DefaultFigureRenderer', 'painters'); 放入startup.m。
  • @horchler 的链接已损坏,但here 给出了简短的解释。

标签: matlab opengl matlab-figure


【解决方案1】:

这些是我所知道的差异

  • OpenGL 是默认渲染器
  • OpenGL 允许绘制透明度而 Painter 不允许
  • 如果使用 OpenGL 时出现图形错误或 Matlab 崩溃,请使用 Painter
  • 选择 Painter 以 postscript 格式导出图形。使用 OpenGL 当图形变得过于复杂时,Matlab 会保存为 Bitmap,您无​​法对其进行编辑。

来自Mathworks website (Scroll down to "renderer"):

  • 'opengl' — OpenGL® 渲染器。此选项使 MATLAB 能够访问 图形硬件(如果它在您的系统上可用)。 OpenGL 渲染器显示按从前到后排序的对象,如上所示 监视器。线条总是在同一时刻画在脸的前面 显示器平面上的位置。

  • 'painters' — Painters 渲染器。此选项适用于坐标轴 二维视图。在 2-D 中,Painters 渲染器按以下方式对图形对象进行排序 子订单(指定的订单)。在 3-D 中,Painters 渲染器排序 对象从前到后顺序。但是,它可能无法正确绘制 在 3-D 中相交多边形。

另请参阅link,了解如何修复 OpenGL 的低级图形问题。

【讨论】:

  • 我已添加链接。
  • 因此画家似乎专门使用 CPU 进行渲染。在 opengl 可能发生 Z-fighting 的情况下(例如,使用 3d 绘图对象在同一绘图中绘制 2d 对象),画家似乎一致地显示表面。
猜你喜欢
  • 2018-08-10
  • 1970-01-01
  • 2015-03-28
  • 2011-12-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-04-08
  • 1970-01-01
相关资源
最近更新 更多