ลำดับของข้อมูลบัฟเฟอร์จุดสุดยอดเมื่อเรนเดอร์สสารดั้งเดิมมีการทำดัชนีหรือไม่?


14

ฉันกำลังสร้างสามเหลี่ยมสามมิติของวัตถุ ถ้าฉันสามารถเขียนมันลงในบัฟเฟอร์ตามลำดับที่คำนวณได้มันจะทำให้รหัส CPU ง่ายขึ้น จุดยอดสำหรับรูปสามเหลี่ยมจะไม่ต่อเนื่องกัน

มีการลงโทษในการปฏิบัติงานใด ๆ สำหรับการเขียนออกคำสั่งหรือไม่?

คำตอบ:


12

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

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

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

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

ฉันจะทำผิดพลาดโดยส่วนตัวในด้านของโค้ดที่อ่านได้และบำรุงรักษาได้เนื่องจากฉันคิดว่าแคชใด ๆ ที่ขาดหายไปที่คุณกำลังจะทำให้เกิดนั้นจะไม่สำคัญพอที่ผู้ใช้จะสังเกตเห็น

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