Снимки GL содержат только верхний левый угол
На моем компьютере во время работы мои снимки rgl содержат только верхний левый угол отображаемого устройства GL. Для Python с помощью Mayavi работает экранный снимок. Однако использование закадрового рендеринга приводит к той же ошибке. К сожалению, моя проблема не воспроизводима, так как в домашних условиях использование того же сценария работает, как и должно. Поэтому, я думаю, это должно быть связано с mesa, но я понятия не имею, где искать свою неверную конфигурацию. Оба компьютера работают под тестированием Debian, но я уже некоторое время сталкиваюсь с этой проблемой. Я нашел комментарий в другой теме об этой проблеме, но решение не было предоставлено.
Вот код R, который я запустил:
library(rgl)
shade3d(cylinder3d(matrix(c(1, -1, 2, -2, 0, 5), 2)), color="red")
rgl.viewpoint(0, -55, fov=30, zoom=0.6)
rgl.snapshot("rgl2.png")
В результате rgl.snapshot, но должен быть rgl screenshot
Код Python, который я использовал
from mayavi import mlab
kwargs = dict(color=(.0,.33,.0), mode='cone', resolution=20, scale_mode='none', scale_factor=0.12, opacity=0.67)
cone = mlab.quiver3d(0, 0, 0, -1.0, 0.0, -1.0, **kwargs)
mlab.savefig('mayavi.png')
mlab.close()
from tvtk.api import tvtk
from tvtk.common import configure_input_data
mlab.options.offscreen = True
fig=mlab.figure()
kwargs = dict(color=(.0,.33,.0), mode='cone', resolution=20, scale_mode='none', scale_factor=0.12, opacity=0.67)
cone = mlab.quiver3d(0, 0, 0, -1.0, 0.0, -1.0, **kwargs)
rw = tvtk.RenderWindow(size=fig.scene._renwin.size, off_screen_rendering=1)
rw.add_renderer(fig.scene._renderer)
w2if = tvtk.WindowToImageFilter()
w2if.magnification = fig.scene.magnification
w2if.input = rw
ex = tvtk.PNGWriter()
fname = 'mayavi_offscreen.png'
ex.file_name = fname
configure_input_data(ex, w2if.output)
w2if.update()
ex.write()
Результаты эквивалентны. Первый (mlab.savefig) работает так, как должен, но второй (ex.write) приводит к левому верхнему углу только как в приведенном выше примере R.
Кто-нибудь испытывал такую же проблему и решил ее? Какие-либо предложения? Нужна дополнительная информация (peglxinfo, ...)?
Спасибо и добрые пожелания
Йорг
1 ответ
Спустя некоторое время и несколько обновлений ядра и обновлений mesa, я переключился на проприетарные драйверы nvidia, и это сработало. Я бы предпочел придерживаться незапятнанного ядра, но лучшего решения не нашел.