Octave 7.2.0-1 Linux下透明重叠曲面绘图异常问题咨询
Octave曲面透明叠加失效问题分析
在Linux系统下使用Octave 7.2.0-1版本时,绘制两个facealpha<1的重叠曲面,仅坐标轴显示透明效果,后方曲面无法呈现透明叠加效果,使用的代码如下:
[ xs, ys, zs ] = sphere( 20 ); surf( xs, ys, zs, 'facealpha', 0.5, 'edgealpha', 0.5, 'facecolor', 'r' ); hold on surf( xs+1, ys+1, zs , 'facealpha',0.5, 'edgealpha', 0.5, 'facecolor', 'g');
这并非Octave的Bug,而是旧版本默认渲染器的限制导致的。Octave 7.x版本默认使用的fltk渲染器对透明曲面的叠加支持不佳,它无法正确处理曲面的深度排序与透明混合逻辑,只会渲染最上层曲面,后方曲面的透明效果无法透过上层显示。
可通过以下两种方式解决:
- 切换至
opengl渲染器:绘图前添加graphics_toolkit('opengl'),该渲染器能正确处理透明曲面的叠加混合,修改后的代码如下:
graphics_toolkit('opengl'); [ xs, ys, zs ] = sphere( 20 ); surf( xs, ys, zs, 'facealpha', 0.5, 'edgealpha', 0.5, 'facecolor', 'r' ); hold on surf( xs+1, ys+1, zs , 'facealpha',0.5, 'edgealpha', 0.5, 'facecolor', 'g');
- 升级Octave版本:8.x及以上的Octave版本对
fltk渲染器的透明效果支持有优化,或默认使用更适配的渲染器,可避免该问题。
内容的提问来源于stack exchange,提问作者jzz11
相关产品推荐
相关产品推荐

