ฉันได้รับมอบหมายให้สร้างการสาธิตแบบเต็มหน้าจอแบบเรียลไทม์เพื่อรันบนทีวี LED ขนาด 5x2 จำนวน 60 นิ้วหรืออีกนัยหนึ่งคือจอแสดงผลขนาด 20 ล้านพิกเซล
เรามีเครื่องจักรที่สามารถรันเดสก์ท็อป Win7 เดียวกระจายไปทั่วหน้าจอด้วยความละเอียดสูงสุดและการ์ดแสดงผลที่ดี
คำถามของฉันคือ: นอกเหนือจากงานที่ไร้สาระที่ผู้สร้างพิกเซลของฉันกำลังจะทำยังมีข้อ จำกัด อื่น ๆ ของ DX10 * ที่จะเข้ามาเล่นที่นี่ซึ่งจะไม่ได้รับวิวพอร์ตที่มีขนาดที่มากกว่านี้อย่างแน่นอนหรือ ฉันจะไม่สามารถเข้าถึงฮาร์ดแวร์ได้จนกว่าจะถึงสัปดาห์หน้า แต่ฉันต้องการที่จะมีบางสิ่งบางอย่างที่เขียนขึ้นโดยที่ฉันสามารถใช้เป็นเกณฑ์มาตรฐานของระบบ
ปรับปรุง
ในขณะที่ Imanaged ทำงานบนเครื่องเดียวที่มีการ์ด AMD EyeFinity (6 เอาต์พุต) จำนวนมาก - เพื่อให้การทำงานราบรื่นขึ้น "วิธีที่ง่ายที่สุด" กลายเป็นวิธีสร้างหน้าต่าง DX ต่อจอแสดงผลเหมือนกับมีการแสดงช่วงหน้าต่าง ทำให้เกิดปัญหาด้านประสิทธิภาพ - ฉันทำให้มันทำงานได้ค่อนข้างดีด้วยการกระจายงานไปยังกลุ่มของเครื่อง
มันง่ายอย่างน่าประหลาดใจ สำหรับแอปทดสอบ XNA ของฉันฉันได้เพิ่ม GameComponent ที่จับภาพสถานะของเกมบางอย่าง (ตำแหน่ง / ทิศทางของกล้อง ฯลฯ ) และ UDP-spams ข้ามซับเน็ตท้องถิ่นต่อเฟรม
องค์ประกอบนั้นมีMode
สวิตช์ (ส่งหรือรับ) หากอยู่ในReceive
โหมดจะจับดาตาแกรม UDP และอัปเดตสถานะเกมด้วยข้อมูลจากผู้ส่ง Send
โหมดเพียงส่งแพ็กเก็ตสถานะและผ่าน service / daemon ทำให้โหนดเริ่มหรือหยุดแอปไคลเอ็นต์ ลูกค้าสามารถทำหน้าที่เป็น "ต้นแบบ" และเปลี่ยนลูกค้าเข้าสู่Send
โหมดการร้องขอโหนดอื่น ๆ Receive
ทุกคนที่จะเข้ามาในสวิทช์ มันค่อนข้างสนุกสนานที่จะเห็นว่าเกิดอะไรขึ้นเมื่อผู้คนต่อสู้กันเหนือการควบคุม
ประโยชน์ที่ประณีตอีกอย่าง: ฉันสร้างแอปคอนโซลซึ่งประมวลผลชุดคำจำกัดความของรัฐเฟรม - ตำแหน่งเวลา ฯลฯ - แทรกตามที่จำเป็นและส่งพวกเขาโดยใช้รหัสเดียวกันกับที่ใช้ในเอ็นจิ้นเกม สิ่งนี้ทำให้ฉันเคลื่อนไหวสคริปต์ได้อย่างง่ายดายส่งการแปลงจากเว็บเบราว์เซอร์ ฯลฯ
สรุปแล้วมันใช้รหัสประมาณ 50 บรรทัดเพื่อให้แอปซิงค์หลายสำเนาทำงานอยู่ ความซับซ้อนเพิ่มเติมบางอย่างมาจากการปิดการตั้งตำแหน่งกล้องสำหรับแต่ละเครื่องและแก้ไขมุมมอง / การรบกวนที่น่าสนใจบางส่วน แต่ส่วนใหญ่มาจากไฟล์กำหนดค่าต่อโหนด