จากคำถามเกี่ยวกับอัตราส่วนภาพฉันสนใจที่จะได้ยินว่าคนอื่นกำลังใช้อะไรเมื่อทำงานกับระบบ 2D UI (น่าจะเป็นโซลูชันที่ปลูกเองในบ้าน) โดยเฉพาะวิธีการทำคุณจัดการกับระบบพิกัด ในใจของฉันมีสามตัวเลือก:
- ยากรหัสพิกัด (เช่น: 0 -> 720, 0 -> 576)
- พิกัดปกติ (0.0 -> 1.0 0.0 -> 1.0), แมปลงในพิกัดจริงก่อนการแสดงผล
- พิกัดเสมือน (เช่น: 0 -> 1600 0 -> 1000), แมปลงในพิกัดจริงก่อนการแสดงผล
รหัสตายตัวจะมีประโยชน์เฉพาะเมื่อคุณอยู่บนแพลตฟอร์มคงที่และรู้ว่าพิกัดพื้นที่หน้าจอของคุณล่วงหน้าหรือว่าคุณพร้อมที่จะเขียนเค้าโครงหน้าจอสำหรับทุกขนาดของหน้าจอที่เป็นไปได้
พิกัดปกติเป็นสิ่งที่ดี แต่ประสบความคลุมเครือเมื่ออัตราส่วนของหน้าจอไม่ได้รับการแก้ไข (เช่น 0.75 แผนที่ไปยังพิกัดทางกายภาพที่แตกต่างกันเมื่อทำงานในจอไวด์สกรีนมากกว่าที่ทำใน 4: 3) นอกจากนี้สำหรับผู้แต่งมันเป็นเรื่องธรรมดาที่จะประกาศองค์ประกอบ UI ให้เป็น (0.2 x 0.2) เพียงเพื่อจะพบว่ามันไม่ได้เป็นรูปสี่เหลี่ยมจัตุรัสจริง ๆ เมื่อแสดงผล
พิกัดเสมือนไม่มีความกำกวม แต่ประสบปัญหาเดียวกับพิกัดปกติที่ขั้นตอนการแมปใหม่ความคลาดเคลื่อนเลขฐานสิบเล็กน้อยอาจส่งผลให้เกิดข้อผิดพลาดแบบทีละหนึ่งหมายความว่าองค์ประกอบ UI ที่ควรเรียงต่อกันระหว่างพวกเขา
ในทำนองเดียวกันเมื่อคุณมีหน้าจอความละเอียดคงที่ทั้งพิกัดปกติและเสมือนหมายความว่ามันยากมากที่จะรับประกันการแมป 1: 1 ระหว่างพิกเซลที่สร้างขึ้นอย่างประณีตของศิลปินในภาพ UI และพิกเซลบนหน้าจอหมายความว่าคุณเสี่ยงต่อการ สิ่งประดิษฐ์ที่น่ารังเกียจในการปรับขนาด (สมมติว่าคุณแสดงผลเป็นภาพพื้นผิวบนหน้าจอ)
เราได้ใช้วิธีการประสานเสมือนจริงโดยเฉพาะเพื่อหลีกเลี่ยงความคลุมเครือเกี่ยวกับอัตราส่วนภาพ ดังนั้นเมื่อเรนเดอร์ไปที่หน้าจอ 16:10 พื้นที่ UI คือ (0,0) -> (1600,1000) แต่เมื่อเรนเดอร์เป็น 4: 3 พื้นที่ UI ที่ใช้งานได้จริงคือ (133,0) -> (1467 , 0)
มีวิธีแก้ปัญหาที่ดีกว่าที่ฉันไม่รู้หรือไม่? มีกลยุทธ์ที่ดีในการลดปัญหาทั้งสามวิธีนี้หรือไม่?