ฉันกำลังคิดถึงฉากประเภท minecraft โดย voxel คุณหมายถึงโลกของบล็อกที่แสดงผลโดยใช้รูปหลายเหลี่ยม:
หากคุณใช้รูปทรงเรขาคณิตมันจะยากที่จะหลีกเลี่ยงการมีสามใบหน้า (หรืออะไรก็ตาม) ต่อ voxel
หากคุณมีบล็อกที่อยู่ติดกันจำนวนมากที่มีพื้นผิวเดียวกันคุณสามารถใช้การเรียงตัวของพื้นผิวเพื่อให้มีสามเหลี่ยมน้อยลงในแถบ (เสื่อม) ของคุณด้วยวิธี VBO ฉันหมายความว่าถ้ามีพื้นที่หญ้า voxels ขนาดใหญ่แบน 6x6 ที่ดีคุณสามารถวาดยอดทั้งรูปในรูปสามเหลี่ยม 2 อันแทนที่จะเป็น 64
ด้วยวิธีการของ GS คุณไม่สามารถทำการคัดสรรใบหน้าที่เกิดจาก voxels ที่อยู่ติดกันซึ่งตรงไปตรงมามากด้วยวิธี VBO
ฉันไม่ได้ลองใช้วิธีการของ GS แต่ฉันสามารถพูดได้ว่าวิธี VBO กับการรวมของการเรียงต่อกันของกระเบื้องทำงานได้ดี ฉันพบว่ายุ่งกับดัชนีองค์ประกอบจะช้ากว่าการทำซ้ำจุดยอดมาก ถ้าคุณแบ่งโลกของคุณเป็นลูกบาศก์เล็ก ๆ ที่ดีโดยปกติคุณสามารถใช้เพียงหนึ่งไบต์ต่อองค์ประกอบต่อจุดยอดและยังบรรจุข้อมูลพื้นผิวและบรรทัดฐาน (ใบหน้าบนลูกบาศก์ที่เรียงตามแนวแกนมี 3 บรรทัดฐานที่เป็นไปได้) เป็นต้นไปเป็นไบต์ถัดไป 4 ไบต์ต่อจุดสุดยอดที่ดีและรวดเร็ว
ฉันใช้ VBOs แยกจากกันสำหรับใบหน้าทั้ง 6 หน้า - คุณจำเป็นต้องวาดอย่างน้อย 3 ใบหน้า สิ่งนี้เข้ากันได้ดีกับพื้นผิวที่แตกต่างซึ่งมักจะใช้กับส่วนบนของ voxels สไตล์ minecraft เพราะสำหรับแต่ละชุดปกติและเช่นนั้นเป็นชุด
ด้วยการใช้ pixmaps แบบเรียงต่อกันเป็นแนวตั้งในแผนที่ด้วยGL_REPEAT
บนแกนนอนและมี pixmaps ที่หมุนได้ 90 องศาในแผนที่เดียวกันฉันพบว่าฉันสามารถวาดบล็อกที่แตกต่างกันจำนวนมากโดยใช้ VBO เดียวกันในการโทรเดียวกัน ในตัวอย่างพื้นที่หญ้า 6x6 ฉันจะแบ่งมันออกเป็น 12 สามเหลี่ยมเพราะฉันทำซ้ำในมิติเดียวในแผนที่ของฉัน
ฉันได้รับสิ่งนี้เป็นส่วนใหญ่ในการทำงานกับชิปกราฟิกและโทรศัพท์มือถือในระดับต่ำสุดซึ่ง GS เป็นเพียงสิ่งที่ฉันสามารถฝันได้เกี่ยวกับการเล่นหนึ่งวัน