使用opengl硬件渲染器导出带有颜色条的MATLAB冲浪图会导致png文件损坏

Gri*_*son 10 opengl matlab plot colorbar

当我使用MATLAB的颜色条将2D曲面图导出到png文件时,当我使用opengl硬件渲染器时会导致图像损坏,如下所示:

从MATLAB导出损坏的曲面图png

其他一切都很好.但是在我创建了一个带有颜色条的图形之后,我导出到png文件的所有其他表面图都被破坏了,即使它们不包含任何颜色条.

opengl info 在MATLAB中给出以下输出:

    Version         = 3.0 Mesa 10.1.0
    Vendor          = Intel Open Source Technology Center
    Renderer        = Mesa DRI Intel(R) Haswell Desktop 
    MaxTextureSize  = 8192
    Visual          = 0x20 (TrueColor, depth 24, RGB mask 0xff0000 0xff00 0x00ff)
    Software        = false
    # of Extensions = 190

    Driver Bug Workarounds:
    OpenGLBitmapZbufferBug    = 0
    OpenGLWobbleTesselatorBug = 0
    OpenGLLineSmoothingBug    = 0
    OpenGLClippedImageBug     = 0
    OpenGLEraseModeBug        = 0
Run Code Online (Sandbox Code Playgroud)

我尝试了所有这些OpenGL的解决方法,但没有任何帮助.

有谁知道如何解决这个问题?

我的系统:

  • 内核:3.13.0-24-通用64位
  • Prozessor:Intel Haswell i7 4770K
  • 图形:Intel HD 4000
  • MATLAB版本:R2013b

在我的同事的计算机上,这是完全一样的,但有一个不同的操作系统(debian wheezy)这个问题没有出现.在他的电脑上opengl info给出:

    Version         = 2.1 Mesa 8.0.5
    Vendor          = VMware, Inc.
    Renderer        = Gallium 0.4 on llvmpipe (LLVM 0x209)
    MaxTextureSize  = 4096
    Visual          = 0xfc (TrueColor, depth 24, RGB mask 0xff0000 0xff00 0x00ff)
    Software        = false
    # of Extensions = 143

    Driver Bug Workarounds:
    OpenGLBitmapZbufferBug    = 0
    OpenGLWobbleTesselatorBug = 0
    OpenGLLineSmoothingBug    = 0
    OpenGLClippedImageBug     = 0
    OpenGLEraseModeBug        = 0
Run Code Online (Sandbox Code Playgroud)

可能是因为在他的情况下它是有效的,因为它Gallium/llvmpipe是一个现实中的软件渲染器?

彩条有什么问题?

小智 1

不幸的是,MATLAB 在标准化方面并不出色,颜色图的问题是,当保存或不与 MATLAB 以外的其他工具一起使用时,编码图像不会保存或生成以便于其他应用程序使用,因为 MATLAB 优化了颜色图仅针对 MATLAB 应用程序进行映射,如果我确实找到可以帮助您的示例,我将编辑我的答案,但我希望这可以帮助您解决问题。

否则是 matlab 错误,无法正确保存图像。