Экспорт графических объектов MATLAB с помощью цветных панелей приводит к повреждению файлов png с помощью рендеринга аппаратного обеспечения opengl

Когда я экспортирую 2D-график поверхности с цветной панелью из MATLAB в файл png, это приводит к повреждению изображения, когда я использую рендеринг оборудования opengl, как показано здесь:

corrupted surface plot png export from MATLAB

Все остальное работает нормально. Но после того, как я создал одну фигуру с цветной панелью, все другие участки поверхности, которые я экспортирую в 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

Я пробовал все эти обходные решения 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

Может ли быть так, что в его случае это работает, потому что Gallium/llvmpipe - это средство визуализации программного обеспечения на самом деле?

В чем проблема с цветной панелью?

Ответ 1

К сожалению, MATLAB не фантастичен, когда дело доходит до стандартизации, проблема с цветовой картой заключается в том, что при сохранении или не использовании чего-либо, кроме MATLAB, закодированное изображение не сохраняется или не создается для удобства использования для других приложений, MATLAB оптимизирует отображение только для приложений MATLAB, если я найду пример, который может помочь вам, я отредактирую свой ответ, но надеюсь, что это проливает свет на вашу проблему.

В противном случае ошибка его matlabs и правильное сохранение изображений.