ฉันกำลังสร้างเกม XNA ที่ต้องการพื้นที่ขนาดใหญ่สำหรับผู้เล่น ขณะนี้แผนที่ความสูงทดสอบที่ฉันใช้คือ 4096x4096 และบันทึกเป็น BMP 4 บิต
สิ่งที่ฉันพยายามจะทำคือนำไฟล์ heightmap ขนาดใหญ่มาแสดงในเกม ปัญหาที่ฉันพบคือความจริงที่ว่ามันไม่มีประสิทธิภาพในการโหลดภูมิประเทศทั้งหมดไปยังหน่วยความจำในครั้งเดียวเนื่องจากมันจะใช้หน่วยความจำส่วนใหญ่ที่มีอยู่
ปัญหาอีกประการหนึ่งที่ฉันพบคือฉันไม่สามารถทำให้ภูมิประเทศทั้งหมดเป็นแบบดั้งเดิมได้เนื่องจากมีการ จำกัด ฮาร์ดภายใน XNA
จากที่กล่าวมาฉันได้เจอวิธีแก้ปัญหาหลายอย่างซึ่งทั้งหมดได้ระบุไว้ด้านล่าง:
- การแสดงผลขึ้นอยู่กับตำแหน่งของผู้ใช้ปัจจุบัน - โดยทั่วไปจะวาดสี่เหลี่ยมรอบผู้ใช้ไม่ว่าจะวางแนวใดในโลก นี่ไม่ใช่สิ่งที่ฉันต้องการอย่างแน่นอนเพราะคุณยังคงแสดงพื้นที่ที่ผู้ใช้ไม่เห็น
- การแสดงผลขึ้นอยู่กับการวางแนวและตำแหน่งของผู้ใช้ - ฉันพบสูตรเพื่อดึงสามเหลี่ยมที่ควรมีพิกเซลของความสูงแผนที่ที่จะแสดง แต่สิ่งนี้พิสูจน์แล้วว่าเป็นเรื่องยากมาก
- แบ่งภูมิประเทศออกเป็นหลาย ๆ ชิ้นและเรนเดอร์ที่ใกล้เคียงกับผู้ใช้มากที่สุด - ยังไม่มีประสิทธิภาพมากนักเนื่องจากคุณยังคงแสดงผลชิ้นส่วนที่ผู้คนไม่เห็น และมันก็ต้องใช้ความพยายามสูงเพราะฉันต้องแบ่งส่วนสูงออกเป็นหลายส่วนและความสามารถในการปรับขยายได้กลายเป็นปัญหาใหญ่
หลังจากลองใช้วิธีแก้ปัญหาเหล่านี้แล้วฉันก็ยังใหม่จากแนวคิดที่จะทำ ฉันได้รับคำตอบบางอย่างที่ผู้คนบอกให้ฉันทำอัลกอริทึมที่ซับซ้อนเหล่านี้ แต่ฉันก็ไม่รู้ว่าจะทำอย่างไร
โดยพื้นฐานแล้วฉันกำลังขอวิธีที่เรียบง่ายตรงไปตรงมาในการแสดงภูมิประเทศที่มีความเป็นมนุษย์ใน XNA ด้วยประสิทธิภาพสูงสุด
ฉันค่อนข้างใหม่สำหรับการพัฒนาเกมโดยทั่วไป แต่ฉันยินดีที่จะทำการวิจัยหากดูเหมือนว่ามีแนวโน้ม
อัปเดต 1:หลังจากค้นคว้าวิธีการ geoclipmapping ฉันเริ่มโค้ดด้วยวิธีนั้น ฉันทำคณิตศาสตร์ทั้งหมดเสร็จแล้วและเกมทำงาน อย่างไรก็ตามมันไม่มีประสิทธิภาพอย่างยิ่ง - ซึ่งอาจเป็นรหัสที่ไม่ดีในส่วนของฉัน มันทำงานที่ 2FPS และใช้ซีพียูทั้งหมดของฉัน ฉันจะลองและปรับปรุงรหัส แต่ฉันคิดว่าฉันต้องการความช่วยเหลือเพิ่มเติมดังนั้นนี่คือ Pastebin ของรหัสสำหรับคลาส Terrain manager ฉันจะโพสต์กลับด้วยผลลัพธ์เพิ่มเติมในภายหลังถ้าฉันได้รับมันจะมีประสิทธิภาพมากขึ้น