ฉันรู้สึกว่าหน้าจอทั้งหมดถูกส่งต่อไม่ว่าจะเกิดอะไรขึ้น ดังนั้นการส่งต่อ X11 ควรเป็นแบบไม่เชื่อเรื่องพระเจ้า
ไม่มันตรงกันข้ามจริงๆ เหตุผลในการส่งต่อ X11 เรียกว่า "การส่งต่อ X11" เป็นเพราะมันส่งข้อความโปรโตคอล Xจริงที่ใช้โดยแอปพลิเคชันเพื่อแสดงหน้าต่างของพวกเขาบน "X server" (โดยทั่วไปคือ Xorg) ข้อความเหล่านั้นเป็นคำสั่งสำหรับการสร้าง / ย้ายหน้าต่างการวาดข้อความและการใช้กราฟิกแบบดั้งเดิม (เส้น / สี่เหลี่ยม) การวาดบิตแมป ฯลฯ
คุณสามารถพูดได้ว่ามันเป็นแนวคิดที่ตรงกันข้ามกับโปรโตคอล "ภาพเต็มหน้าจอ" เช่น VNC / RFB ฉันคิดว่ามันค่อนข้างจะเทียบได้กับ RDP ของ Windows ซึ่งทำขึ้นเพื่อการขนส่งคำสั่งการวาด GDI
ดังนั้นเหตุผลที่คุณเห็นความแตกต่างระหว่างโปรแกรมคือ:
หากต้องการอ้างอิงโพสต์ที่คุณอ้างอิงโดยปกติแล้วโปรแกรมที่ใช้ X ส่วนใหญ่จะทำงานดังนี้:
โดยทั่วไป X11 ไม่ได้ส่งหน้าจอไปยังคอมพิวเตอร์ของคุณ แต่จะส่งคำแนะนำการแสดงผลเพื่อให้ X-server ในเครื่องคอมพิวเตอร์ของคุณสามารถสร้างหน้าจอในระบบท้องถิ่นของคุณได้
ดังนั้นเมื่อโปรแกรมต้องการแสดงปุ่มมันเพิ่งส่งคำสั่งสั้น ๆ สองสามคำ - "วาดรูปสี่เหลี่ยมผืนผ้า", "วาดข้อความ" และอาจมีบางบรรทัดเพื่อให้ดูเป็นแบบสามมิติ
เมื่อเวลาผ่านไปสิ่งนี้เปลี่ยนไปโปรแกรมเริ่มทำการเรนเดอร์ด้วยตนเองและคำแนะนำเหล่านั้นมากมายกลายเป็น "นี่เป็นบิตแมปที่ฉันแสดงแล้ววางบนหน้าจอ" - เร็วมากภายในเครื่อง แต่ช้ามากผ่านเครือข่ายเนื่องจาก X11 ขาด การบีบอัดภาพ
ซึ่งหมายความว่าโปรแกรมที่สร้างขึ้นโดยใช้ชุดเครื่องมือที่ทันสมัยนั้นช้ากว่าเครือข่าย X11 มากถึงแม้ว่ามันจะเป็นสิ่งที่พื้นฐานเหมือนฟอนต์ที่ลดรอยหยักก็ตาม
(ในทางตรงกันข้าม RDP ปรับตัวตามเวลาและรวมถึงการบีบอัดภาพในรูปแบบต่าง ๆ เช่น JPEG และแม้กระทั่ง H.264 คุณมักจะสังเกตเห็นสิ่งประดิษฐ์การบีบอัดในขณะที่กำลังโหลดภาพเต็ม)
โชคดีที่ชุดเครื่องมือ UI ส่วนใหญ่เช่น GTK ใช้การติดตามความเสียหายดังนั้นจะส่งเฉพาะภูมิภาคที่อัปเดตแล้วเท่านั้น อย่างไรก็ตามมีบางโปรแกรม (เช่น Firefox / Thunderbird หลายรุ่น) ไม่สนับสนุนสิ่งนี้และขอให้ทำการเรนเดอร์ทั้งหน้าต่างซ้ำอีกครั้งแม้ว่าจะไม่ได้อัพเดตจริง ๆ
นั่นคือความแตกต่างระหว่างโปรแกรมอื่น ๆ - โปรแกรมที่ทำงานได้ดีนั้นยังคงสามารถใช้งานได้ผ่านเครือข่าย แต่โปรแกรมที่ buggy สามารถทำให้ลิงก์เต็ม 100 Mbps ไม่ทำอะไรเลยที่มีประโยชน์อย่างแน่นอน