2017-08-08 4 views
0

Sur mon ordinateur au travail, mes instantanés réglés ne contiennent que le coin supérieur gauche du périphérique GL affiché. Pour python en utilisant mayavi en utilisant les travaux instantanés à l'écran. Cependant, l'utilisation du rendu hors écran entraîne la même erreur. Malheureusement, mon problème n'est pas reproductible, car à la maison en utilisant le même script fonctionne comme il se doit. Par conséquent, je suppose que cela doit être lié à mesa, mais je n'ai pas la moindre idée de l'endroit où chercher ma mauvaise configuration. Les deux ordinateurs fonctionnent sous test Debian, mais je rencontre déjà ce problème depuis un moment. J'ai trouvé un commentaire dans another thread sur le même problème, mais aucune solution n'a été fournie.Les instantanés GL ne contiennent que le coin supérieur gauche.

Voici le code R I couru:

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") 

résultant en rgl.snapshot, mais devrait être rgl screenshot

Le code python j'est

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() 

Les résultats sont équivalents. Le premier (mlab.savefig) fonctionne comme il se doit, mais le second (ex.write) se traduit dans le coin supérieur gauche uniquement comme dans l'exemple R ci-dessus.

Est-ce que quelqu'un a rencontré le même problème et l'a résolu? Aucune suggestion? Avez-vous besoin d'autres informations (p.e.glxinfo, ...)?

Merci et salutations

Jörg

+0

Il semble que votre pilote MesaGL renvoie des informations de taille incohérentes sur l'affichage. Aucune idée de comment résoudre ce problème, autre que de s'assurer que vous avez la dernière mise à jour des deux pilotes de cartes graphiques et Mesa. – user2554330

Répondre

0

Après un certain temps calme et plusieurs mises à jour du noyau et des mises à jour mesa, je suis passé aux pilotes nvidia propriétaires et cela a fonctionné. J'aurais préféré coller au noyau non taché, bur n'a pas trouvé une meilleure solution.