การเข้ารหัสสำหรับอาร์เรย์การแสดงผลที่มีความละเอียดสูงจริงๆ


17

ฉันได้รับมอบหมายให้สร้างการสาธิตแบบเต็มหน้าจอแบบเรียลไทม์เพื่อรันบนทีวี LED ขนาด 5x2 จำนวน 60 นิ้วหรืออีกนัยหนึ่งคือจอแสดงผลขนาด 20 ล้านพิกเซล

เรามีเครื่องจักรที่สามารถรันเดสก์ท็อป Win7 เดียวกระจายไปทั่วหน้าจอด้วยความละเอียดสูงสุดและการ์ดแสดงผลที่ดี

คำถามของฉันคือ: นอกเหนือจากงานที่ไร้สาระที่ผู้สร้างพิกเซลของฉันกำลังจะทำยังมีข้อ จำกัด อื่น ๆ ของ DX10 * ที่จะเข้ามาเล่นที่นี่ซึ่งจะไม่ได้รับวิวพอร์ตที่มีขนาดที่มากกว่านี้อย่างแน่นอนหรือ ฉันจะไม่สามารถเข้าถึงฮาร์ดแวร์ได้จนกว่าจะถึงสัปดาห์หน้า แต่ฉันต้องการที่จะมีบางสิ่งบางอย่างที่เขียนขึ้นโดยที่ฉันสามารถใช้เป็นเกณฑ์มาตรฐานของระบบ

ปรับปรุง

ในขณะที่ Imanaged ทำงานบนเครื่องเดียวที่มีการ์ด AMD EyeFinity (6 เอาต์พุต) จำนวนมาก - เพื่อให้การทำงานราบรื่นขึ้น "วิธีที่ง่ายที่สุด" กลายเป็นวิธีสร้างหน้าต่าง DX ต่อจอแสดงผลเหมือนกับมีการแสดงช่วงหน้าต่าง ทำให้เกิดปัญหาด้านประสิทธิภาพ - ฉันทำให้มันทำงานได้ค่อนข้างดีด้วยการกระจายงานไปยังกลุ่มของเครื่อง

มันง่ายอย่างน่าประหลาดใจ สำหรับแอปทดสอบ XNA ของฉันฉันได้เพิ่ม GameComponent ที่จับภาพสถานะของเกมบางอย่าง (ตำแหน่ง / ทิศทางของกล้อง ฯลฯ ) และ UDP-spams ข้ามซับเน็ตท้องถิ่นต่อเฟรม

องค์ประกอบนั้นมีModeสวิตช์ (ส่งหรือรับ) หากอยู่ในReceiveโหมดจะจับดาตาแกรม UDP และอัปเดตสถานะเกมด้วยข้อมูลจากผู้ส่ง Sendโหมดเพียงส่งแพ็กเก็ตสถานะและผ่าน service / daemon ทำให้โหนดเริ่มหรือหยุดแอปไคลเอ็นต์ ลูกค้าสามารถทำหน้าที่เป็น "ต้นแบบ" และเปลี่ยนลูกค้าเข้าสู่Sendโหมดการร้องขอโหนดอื่น ๆ Receiveทุกคนที่จะเข้ามาในสวิทช์ มันค่อนข้างสนุกสนานที่จะเห็นว่าเกิดอะไรขึ้นเมื่อผู้คนต่อสู้กันเหนือการควบคุม

ประโยชน์ที่ประณีตอีกอย่าง: ฉันสร้างแอปคอนโซลซึ่งประมวลผลชุดคำจำกัดความของรัฐเฟรม - ตำแหน่งเวลา ฯลฯ - แทรกตามที่จำเป็นและส่งพวกเขาโดยใช้รหัสเดียวกันกับที่ใช้ในเอ็นจิ้นเกม สิ่งนี้ทำให้ฉันเคลื่อนไหวสคริปต์ได้อย่างง่ายดายส่งการแปลงจากเว็บเบราว์เซอร์ ฯลฯ

สรุปแล้วมันใช้รหัสประมาณ 50 บรรทัดเพื่อให้แอปซิงค์หลายสำเนาทำงานอยู่ ความซับซ้อนเพิ่มเติมบางอย่างมาจากการปิดการตั้งตำแหน่งกล้องสำหรับแต่ละเครื่องและแก้ไขมุมมอง / การรบกวนที่น่าสนใจบางส่วน แต่ส่วนใหญ่มาจากไฟล์กำหนดค่าต่อโหนด


2
ฟังดูเหมือนเป็นโครงการที่สนุกจริงๆ
Cypher

1
อ๋อ ฉันเกือบจะ cackled และ muah-ha-ha'd
3Dave

3
ฉันทำมันด้วยราคาถูก 10 อย่างในฐานะเครื่องจักรสินค้าสกปรกซึ่งแต่ละคนกังวลเพียงแค่การแสดงว่ามันเป็นมุมมองของโลกและเครือข่ายเพื่อรักษาเวลาซิงค์และควบคุมจากกล่องหลักบางอย่าง แทนที่จะเป็นขอบเลือดออกการกำหนดค่าเครื่องที่ยังไม่ผ่านการทดสอบซึ่งมีความเสี่ยงด้านการวิจัยและพัฒนาเป็นจำนวนมากมันจะเป็นวิธีการแก้ปัญหาบรรจุกระป๋องที่มีความเสี่ยงต่ำมาก นั่นเป็นเพียงฉันแม้ว่า YMMV
Patrick Hughes

นั่นเป็นวิธีที่ฉันจะไป แต่ฉันไม่ได้ซื้อฮาร์ดแวร์เลย = /
3

ที่จริงแล้วเครือข่ายการแสดงผลที่ซิงค์นั้นยอดเยี่ยมมาก สิ่งที่ท้าทาย แต่ฉันสามารถทำได้แล้ว และให้ความยืดหยุ่นบางส่วนอีกครั้ง: ไม่จำเป็นต้องเรนเดอร์หลายสตรีมจากกล่องเดียวถ้าคุณต้องการแยกอาเรย์ "Parallel" เป็นหนึ่งในคำที่ฉันชอบ!
3Dave

คำตอบ:


5

ฉันจะกังวลมากเกี่ยวกับการกำหนดค่าฮาร์ดแวร์เป็นซอฟต์แวร์ คุณไม่จำเป็นต้องเรียกใช้ทีวีแต่ละเครื่องที่ความละเอียดดั้งเดิมและขนาดหน้าจอจะแตกต่างจากความละเอียด ฉันจะสมมติว่าทีวีขนาด 60 นิ้วแต่ละตัวมีความละเอียด 1920x1080 ดังนั้นความละเอียดดั้งเดิมของทีวีทั้งหมดคือ 9600x2160 ถ้าคุณหมายถึงทีวี 5 แถว x 2 คอลัมน์หรือ 3840x5400 ถ้าคุณหมายถึงคอลัมน์ 5 x 2 แถว

การ์ด AMD Radeon รุ่นใหม่ล่าสุด 7970 รองรับความละเอียดสูงถึง 4096x2160 ต่อจอแสดงผลสูงสุดสองจอแสดงผลหากคุณใช้ DisplayPort 1.2 เพื่อถ่ายโอนวิดีโอ ดังนั้นคุณอาจได้รับความละเอียดใกล้เคียงกับเนทิฟอย่างไรก็ตามมันจะไม่ทำงานกับทีวีมากถึง 5 เครื่อง

AMD Radeon 6870 Eyefinity 6 รองรับเอาต์พุตสูงสุด 6 เอาต์พุตในคราวเดียว แต่มีความละเอียดสูงสุดที่ 5760x2160 เท่านั้น นอกจากนี้ยังรองรับการกำหนดค่า Crossfire ซึ่งจะช่วยให้ประสิทธิภาพของคุณค่อนข้างดี โปรดจำไว้ว่า GPU พิเศษนั้นจะไม่ให้ความละเอียดสูงสุดมากขึ้น

ขาดการตั้งค่าการแสดงผลที่กำหนดเองอย่างสมบูรณ์หรือบางสิ่งบางอย่างเพื่อแยกสัญญาณวิดีโอของคุณไปยังจอภาพ / ทีวีเพิ่มเติมฉันไม่แน่ใจว่าคุณจะสามารถเรียกใช้บนจอแสดงผล 10 จอได้ในครั้งเดียว แต่ถ้าคุณมีความสามารถนั้นสิ่งที่คุณกำลังมองหาคือการตั้งค่ากราฟิกที่เร็วที่สุดที่รองรับความละเอียดที่ใกล้เคียงที่สุดกับความละเอียดดั้งเดิมของคุณ เมื่อคุณทราบแล้วว่าทางออกที่ดีที่สุดของคุณก็คือการรักษาความเงาของพิกเซลให้ถูกที่สุดและหลีกเลี่ยงการเบิกเกินซึ่งหมายความว่าการคำนวณพิกเซลเดียวมากกว่าหนึ่งครั้ง การคัดกรอง Frustum และการบดเคี้ยวและการจัดเรียงเชิงลึกจะช่วยลดการถอนได้มาก เท่าที่มีการ จำกัด ใน DX10 ฉันไม่แน่ใจว่ามีขีด จำกัด ความละเอียดฉันแน่ใจว่ามี แต่มันอาจจะมากกว่าการ์ด DX10 ที่มีอยู่


ฮาร์ดแวร์ทำงานอาร์เรย์ทั้งหมดแล้วโดยมีจอแสดงผลแต่ละอันที่ 1920x1080 5 คอลัมน์โดยสองแถว ชายอีกคนหนึ่งมีหน้าต่าง OpenGL ที่มีความละเอียดเต็มรูปแบบโดยมีโครงลวดหมุนวนอยู่ แค่สงสัยเกี่ยวกับข้อ จำกัด DX ใด ๆ ที่อาจกลับมาและกัดฉันในภายหลัง
3Dave

1
เท่าที่ฉันรู้ว่าคุณจะไม่ถูก จำกัด โดย DX10 สำหรับความละเอียดเช่นเดียวกับที่คุณกำลังอธิบาย หากคุณสามารถแสดงผลได้ในการตั้งค่านั้นประสิทธิภาพจะเป็นสิ่งเดียวที่คุณกังวลและการจัดการนั้นจะเหมือนกับเกม / โปรแกรมอื่น ๆ เพียงปรับขนาดขึ้นเล็กน้อยเนื่องจากพื้นที่หน้าจอพิเศษ
Nic Foster

6

คุณสามารถสร้างเป้าหมายการแสดงผลที่มีขนาดเท่ากันเพื่อทดสอบประสิทธิภาพได้อย่างง่ายดาย คุณจะต้องลดขนาดหรือขยายเมื่อคัดลอกไปยังบัฟเฟอร์ด้านหลังจนกว่าคุณจะได้รับฮาร์ดแวร์จริง

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