Làm thế nào đồ họa OpenGL có thể được hiển thị từ xa bằng cách sử dụng VNC?


24

Tôi đang cố gắng chạy một chương trình sử dụng OpenGL để kết xuất mô hình trong chế độ xem qua VNC không thành công.

Thông báo lỗi tôi nhận được là - Xlib: tiện ích mở rộng "GLX" bị thiếu trên màn hình ": 1.0".

Theo hiểu biết của tôi, VNC có thể được cấu hình để hiển thị tất cả đồ họa từ xa và gửi một màn hình nén từ bộ đệm hiển thị đến máy khách cục bộ. Điều này dường như phủ nhận sự cần thiết của tiện ích mở rộng GLX trên máy khách cục bộ. VNC có thể được cấu hình theo cách này và bạn có thể mô tả ngắn gọn bằng cách nào?

Máy chủ từ xa:

vncserver trên RHEL 5

Khách hàng địa phương:

UltraVNC trên Windows XP


Chương trình OpenGL có hoạt động cục bộ trên bảng điều khiển RH # L5 không? Nó sẽ hoạt động từ xa thông qua X-Windows? Nếu không, nó sẽ không hoạt động trên VNC.
kmarsh

2
Tại sao đây là Wiki cộng đồng?
Chris S

Tôi nghĩ nếu đó là một wiki cộng đồng, mọi người có thể chỉnh sửa câu hỏi để làm cho nó phù hợp hơn với việc lưu trữ.
Jared Brown

Câu trả lời:


17

Bạn có thể muốn xem Virtual GL

Trích dẫn: "VirtualGL là gói nguồn mở cung cấp cho bất kỳ phần mềm hiển thị từ xa Unix hoặc Linux nào khả năng chạy các ứng dụng OpenGL với khả năng tăng tốc phần cứng 3D đầy đủ"


14

Tôi đang sử dụng x11vnc để có quyền truy cập từ xa vào bất cứ thứ gì màn hình đang hiển thị. x11vnc nói chuyện với máy chủ X11 cục bộ và sao chép bộ đệm khung từ máy chủ sang máy khách qua vnc. Do máy chủ X11 cục bộ kết xuất mọi thứ với khả năng tăng tốc phần cứng, tôi nhận được OpenGL tăng tốc phần cứng qua VNC, ngay cả với tất cả các hiệu ứng máy tính để bàn thú vị. Đây là cách tôi bắt đầu x11vnc:

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

Tôi nghĩ rằng hầu hết mọi người xem vnc đều hoạt động, nhưng tôi khuyên bạn nên dùng turbovnc hoặc tigervnc. Tôi đã thử VirtualGL trước và nó hoạt động tốt, nhưng không phải cho toàn bộ máy tính để bàn, chỉ cho các ứng dụng OpenGL riêng lẻ.

Thậm chí có thể thay đổi độ phân giải trên màn hình / vnc bằng xrandr. Ví dụ như thế này:

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

(Có thể thêm độ phân giải mới nếu các chế độ khả dụng không đủ, nhưng điều đó nằm ngoài phạm vi ở đây.)

Vì vậy, bây giờ tôi có một phiên bản VNC được tăng tốc và thay đổi hoàn toàn phần cứng.


1
Đã thử phương pháp này với xfce4 và máy xay sinh tố trên máy Tesla K80 GCE ... nó hoạt động hoàn hảo. Gnome-shell vẫn không hiển thị đúng vì một số lý do, như mọi khi. Askubfox.com/questions/229989/NH
Ray Foss

1

Vô hiệu hóa trình điều khiển Video Hook đặc biệt mà UltraVNC sử dụng hoặc sử dụng chặt chẽ.

Vì trình điều khiển UltraVNC được sử dụng để cải thiện hiệu suất, nó sẽ loại bỏ mọi loại xử lý video được thực hiện trên Thẻ Video, chẳng hạn như OpenGL.

Trình điều khiển video mà UltraVNC cài đặt theo mặc định, nó làm cho nó không thể hiển thị đồ họa OpenGL. Lưu ý rằng việc vô hiệu hóa trình điều khiển sẽ làm giảm đáng kể hiệu suất. Cũng lưu ý rằng trong khi hiển thị các mục được hiển thị trong hiệu suất OpenGL sẽ bị ảnh hưởng ở cả hai đầu, vì máy khách hiện có nhiều việc phải làm hơn và băng thông yêu cầu cao hơn rất nhiều. Đừng mong đợi bất cứ điều gì hơn 4 giây trên mỗi khung hình (không phải 4 khung hình / giây, giống như 0,25 khung hình / giây)


Khi bạn nói vô hiệu hóa móc video trong UltraVNC, bạn đang đề cập đến máy khách cục bộ? Thay vào đó, vncserver chạy trên máy chủ từ xa phải được cấu hình?
Jared Brown

Không, ý tôi là khách hàng địa phương. UltraVNC bao gồm trình điều khiển video được cài đặt cùng với nó. Trừ khi bạn nói rõ ràng khác, trình điều khiển video sẽ cố gắng xử lý tất cả video ở đầu máy khách để nó có thể nén và truyền phát để sử dụng qua mạng. Đôi khi có thể chỉ định trên trình xem rằng bạn không muốn sử dụng tính năng này, nhưng UltraVNC (ít nhất là được sử dụng) có xu hướng bỏ qua điều này.
IceMage

Ngoài ra, từ xa và địa phương phụ thuộc vào quan điểm của bạn. Khi tôi nói cục bộ, tôi thực sự có nghĩa là Máy chủ (máy tính đang lắng nghe các kết nối mới) và Remote có nghĩa là máy tính thực hiện kết nối. Tôi sẽ sửa lỗi này cho các bài viết trong tương lai.
IceMage

OK - Tôi đoán tôi đang sử dụng biệt ngữ đối diện. Khi tôi cài đặt trình xem UltraVNC, tôi không tin rằng nó có trình điều khiển video được cài đặt. Máy chủ UltraVNC tôi biết, nhưng tôi không sử dụng. Tôi đang sử dụng vncserver trên máy RHEL5 làm máy chủ.
Jared Brown

Vì vậy, câu hỏi thực sự của tôi là, làm cách nào để định cấu hình vncserver để không gửi lệnh GLX mà chỉ gửi một màn hình nén từ bộ đệm hiển thị đến trình xem UltraVNC?
Jared Brown
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.