กราฟิก OpenGL สามารถแสดงผลจากระยะไกลโดยใช้ VNC ได้อย่างไร


24

ฉันพยายามเรียกใช้โปรแกรมที่ใช้ OpenGL เพื่อสร้างแบบจำลองในวิวพอร์ตผ่าน VNC ไม่สำเร็จ

ข้อความแสดงข้อผิดพลาดที่ฉันได้รับคือ - Xlib: extension "GLX" หายไปบนจอแสดงผล ": 1.0"

ฉันเข้าใจว่า VNC สามารถกำหนดค่าให้แสดงกราฟิกทั้งหมดจากระยะไกลและส่งการบีบหน้าจอที่บีบอัดจากบัฟเฟอร์การแสดงผลไปยังไคลเอนต์ท้องถิ่น สิ่งนี้ดูเหมือนจะเป็นการปฏิเสธความต้องการส่วนขยาย GLX ของลูกค้าในพื้นที่ VNC สามารถกำหนดค่าได้ด้วยวิธีนี้และคุณสามารถอธิบายสั้น ๆ ได้อย่างไร?

โฮสต์ระยะไกล:

vncserver บน RHEL 5

ลูกค้าในพื้นที่:

UltraVNC บน Windows XP


โปรแกรม OpenGL จะทำงานในเครื่องบนคอนโซล RH # L5 หรือไม่ มันจะทำงานจากระยะไกลผ่าน X-Windows หรือไม่? ถ้าไม่มันจะไม่ทำงานบน VNC
kmarsh

2
เหตุใดจึงเป็น Wiki ชุมชน
Chris S

ฉันคิดว่าถ้าเป็นคนวิกิชุมชนสามารถแก้ไขคำถามเพื่อให้มีความเกี่ยวข้องกับการเก็บถาวร
Jared Brown

คำตอบ:


17

คุณอาจต้องการดูVirtual GL

อ้างอิง: "VirtualGL เป็นแพคเกจโอเพนซอร์ซซึ่งให้ซอฟต์แวร์แสดงผลระยะไกลแบบ Unix หรือ Linux ใด ๆ สามารถเรียกใช้แอปพลิเคชัน OpenGL ด้วยการเร่งความเร็วฮาร์ดแวร์ 3 มิติแบบเต็ม"


14

ฉันใช้x11vncเพื่อเข้าถึงสิ่งที่จอภาพกำลังแสดงจากระยะไกล x11vnc พูดคุยกับเซิร์ฟเวอร์ X11 ในพื้นที่และคัดลอก framebuffer จากเซิร์ฟเวอร์ไปยังไคลเอนต์ผ่าน vnc เนื่องจากเซิร์ฟเวอร์ X11 ในพื้นที่แสดงผลทุกอย่างด้วยการเร่งความเร็วฮาร์ดแวร์ฉันได้รับการเร่งด้วยฮาร์ดแวร์ OpenGL ผ่าน VNC แม้จะมีเอฟเฟกต์เดสก์ท็อปสุดเจ๋งก็ตาม นี่คือวิธีที่ฉันเริ่ม x11vnc:

x11vnc -rfbauth ~/.vnc/passwd  -display :0 -forever -bg -repeat -nowf -o ~/.vnc/x11vnc.log

ฉันคิดว่าผู้ชม vnc เกือบทุกคนทำงานได้ แต่ฉันขอแนะนำ turbovnc หรือ tigervnc ฉันลอง VirtualGL เป็นครั้งแรกและใช้งานได้ดี แต่ไม่ใช่สำหรับเดสก์ท็อปทั้งหมดเฉพาะสำหรับแอปพลิเคชัน OpenGL แต่ละตัวเท่านั้น

มันเป็นไปได้ที่จะเปลี่ยนความละเอียดบนจอแสดงผล / vnc โดยใช้ xrandr เช่นนี้

xrandr -q (to see available modes and outputs)
xrandr --output DVI-I-0 --mode "1024x768" (change mode on DVI output)

(เป็นไปได้ที่จะเพิ่มความละเอียดใหม่หากโหมดที่มีไม่เพียงพอ แต่อยู่นอกขอบเขตที่นี่)

ดังนั้นตอนนี้ฉันมีฮาร์ดแวร์ OpenGL อย่างเต็มที่เร่งและปรับขนาดเซสชัน VNC


1
ลองใช้วิธีนี้กับ xfce4 และปั่นบนเครื่อง Tesla K80 GCE ... มันทำงานได้อย่างไร้ที่ติ Gnome-shell ยังคงแสดงไม่ถูกต้องด้วยเหตุผลบางอย่างเช่นเคย askubuntu.com/questions/229989/…
Ray Foss

1

ปิดใช้งานไดรเวอร์ Video Hook พิเศษที่ UltraVNC ใช้หรือใช้ TightVNC

เนื่องจากไดรเวอร์ UltraVNC ใช้เพื่อปรับปรุงประสิทธิภาพจึงลดการประมวลผลวิดีโอทุกชนิดที่ทำบนการ์ดวิดีโอเช่น OpenGL

ไดรเวอร์วิดีโอที่ UltraVNC ติดตั้งเป็นค่าเริ่มต้นทำให้ไม่สามารถแสดงกราฟิก OpenGL ได้ โปรดทราบว่าการปิดใช้งานไดรเวอร์จะลดประสิทธิภาพลงอย่างมาก นอกจากนี้โปรดทราบว่าในขณะที่การแสดงรายการที่แสดงในประสิทธิภาพของ OpenGL จะเกิดขึ้นทั้งสองด้านเนื่องจากเครื่องไคลเอนต์มีงานต้องทำมากมายและแบนด์วิดท์ที่ต้องการนั้นสูงกว่ามาก อย่าคาดหวังอะไรมากกว่า 4 วินาทีต่อเฟรม (ไม่ใช่ 4 fps, มากกว่า 0.25 fps)


เมื่อคุณพูดปิดการใช้งานเบ็ดวิดีโอใน UltraVNC คุณหมายถึงลูกค้าในท้องถิ่น? vncserver จะไม่ทำงานบนโฮสต์ระยะไกลหรือไม่
Jared Brown

ไม่ฉันหมายถึงลูกค้าในพื้นที่ UltraVNC มีไดรเวอร์วิดีโอที่ติดตั้งไว้ เว้นแต่ว่าคุณจะพูดเป็นอย่างอื่นอย่างชัดเจนไดรเวอร์วิดีโอจะพยายามประมวลผลวิดีโอทั้งหมดบนเครื่องลูกข่ายเพื่อให้สามารถบีบอัดและสตรีมเพื่อใช้งานผ่านเครือข่าย บางครั้งเป็นไปได้ที่จะระบุในวิวเวอร์ที่คุณไม่ต้องการใช้คุณสมบัตินี้ แต่ UltraVNC (อย่างน้อยเคยใช้) มีแนวโน้มที่จะไม่สนใจสิ่งนี้
IceMage

นอกจากนี้ระยะไกลและท้องถิ่นขึ้นอยู่กับมุมมองของคุณ เมื่อฉันพูดว่าท้องถิ่นฉันหมายถึงโฮสต์ (คอมพิวเตอร์ที่กำลังฟังการเชื่อมต่อใหม่) และ Remote หมายถึงคอมพิวเตอร์ที่ทำการเชื่อมต่อ ฉันจะแก้ไขสิ่งนี้สำหรับการโพสต์ในอนาคต
IceMage

ตกลง - ฉันเดาว่าฉันใช้ศัพท์แสงตรงข้าม เมื่อฉันติดตั้งวิวเวอร์ UltraVNC ฉันไม่เชื่อว่ามันติดตั้งไดรเวอร์วิดีโอไว้ เซิร์ฟเวอร์ UltraVNC ที่ฉันรู้จักรู้ แต่ฉันไม่ได้ใช้สิ่งนั้น ฉันใช้ vncserver บนเครื่อง RHEL5 เป็นโฮสต์
Jared Brown

ดังนั้นคำถามที่แท้จริงของฉันคือฉันจะกำหนดค่า vncserver เพื่อไม่ส่งคำสั่ง GLX แต่ส่งหน้าจอที่บีบอัดจากบัฟเฟอร์แสดงผลไปยังตัวแสดง UltraVNC ได้อย่างไร
Jared Brown
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.