Bu soruyu sorduğumdan bu yana bir süre geçti, bu yüzden sonuçta kullandığımız çözümden bahsedeceğim.
Yerel X ekranını ele geçirme
Sonunda, uzak opengl programlarını sunucunun yerel X ekranında çalıştırdım. Makine Ubuntu sunucu sürümünü çalıştırıyordu ve varsayılan olarak bir xserver çalıştırmıyordu, bu yüzden başlangıçta çalıştırmak için bir xserver kurmak zorunda kaldım (sadece Ubuntu'nun ubuntu-masaüstü paketini kurdum, bir balyozla bir sivrisinek öldürdüm) ve sonra kendime X komutuna root olarak şu komutları kullanarak erişme izni verdi: "export DISPLAY =: 0.0; xhost + local:". Sonra makineye ssh, "ihracat DISPLAY =: 0.0" arayın ve sonra opengl programlarımı normal olarak çalıştırabilir. Uzak makinede oturan herkes bir pencere açılır ve programımın çalışmasını izlerdi, ancak bağlı bir monitörümüz yok, bu yüzden bu bir problem değildi.
Bazı ekran dışı görüntü oluşturma yöntemlerini kullanmak önemlidir, çünkü pencereleri doğrudan ekran renk arabelleğinden okumak pencere başka bir pencere tarafından gizlenirse çöp verisine neden olabilir. X ekranını göremediğiniz için bunun olup olmadığını bilmek zor. Ekran dışı oluşturma (örn. Framebuffer nesneleri (fbo) veya pbuffers) bu sorunla karşılaşmaz.
Sunucunun yerel Xscreen'ini ele geçirmek ideal bir çözüm değildir, bu yüzden yol boyunca bulduğum birkaç alternatif var:
Sanal Çerçeve Tamponları
Xvfb bir seçenektir, ancak benim için işe yaramadı, çünkü OpenGL donanım hızlandırmasından yararlanmadı ve OpenGL ile CUDA ile birlikte çalışabilirlik için gerekli olan çerçeve tampon nesneleri desteklenmedi. Bununla birlikte, bu, yerel ekranın ele geçirilmesinin kabul edilemez olduğu veya kullanıcının xhost ayrıcalıklarını alamadığı uygulanabilir bir seçenek olabilir.
VirtualGL
VirtualGL web sitesinden:
VirtualGL, herhangi bir Unix veya Linux uzak ekran yazılımına OpenGL uygulamalarını tam 3D donanım hızlandırması ile çalıştırma olanağı veren açık kaynaklı bir pakettir.
Bu tam olarak istediğim şey ve çok umut verici görünüyor, ancak yeni bir kütüphane bağımlılığıyla başa çıkmak için zamanım yoktu, bu yüzden test etmedim. Benim tahminim, derlediğimde, kurulduktan ve yapılandırıldıktan sonra bu ideal çözümdür. VirtualBox ve bazı VNC sunucuları donanım hızlandırmalı 3D'yi desteklemek için bunu kullanır.