ขนาดเล็ก 3D
การสอนการเรนเดอร์ซอฟต์แวร์ 3 มิติไม่มีการเพิ่มประสิทธิภาพประสิทธิภาพใด ๆ และส่วนใหญ่จะอธิบายให้ผู้คนทราบถึงวิธีการเขียนตัวแสดงซอฟต์แวร์ท่อคงที่ แม้ว่ารหัสหลักจะมีเพียง 700 บรรทัด แต่นกกระจอกมีขนาดเล็กและมีอวัยวะภายในทั้งหมด
【 readme เป็นภาษาอังกฤษ】
ลักษณะ
- ไฟล์เดียว: ซอร์สโค้ดมีเพียงหนึ่ง mini3d.c และไฟล์เดียวใช้ทุกอย่างและอ่านง่าย
- การรวบรวมอิสระ: ไม่มีการพึ่งพาห้องสมุดบุคคลที่สามไม่มีไดเรกทอรีวิศวกรรมที่ซับซ้อน
- แบบจำลองมาตรฐาน: โมเดลพิกัด D3D มาตรฐานระบบมือซ้ายบวกโลก / มุมมอง / การฉายสามเมทริกซ์
- การใช้การปลูกพืช: การปลูกพืช CVV ง่าย ๆ
- การสนับสนุนพื้นผิว: การสนับสนุนสูงสุดสำหรับ 1024 x 1024 พื้นผิว
- แคชลึก: ใช้แคชลึกเพื่อกำหนดภาพก่อนและหลัง
- แผนที่มุมมอง: การทำแผนที่พื้นผิวมุมมองและการเติมสีมุมมอง
- Edge Computing: การคำนวณการครอบคลุมรูปหลายเหลี่ยมที่แม่นยำ
- การใช้งานที่คล่องตัว: เอ็นจิ้นการเรนเดอร์มีเพียง 700 แถวโมดูลมีความชัดเจนและกระดูกสันหลังก็โดดเด่น
- ความคิดเห็นโดยละเอียด: ความคิดเห็นโดยละเอียดเกี่ยวกับรหัสหลัก
การรวบรวม
- MINGW: GCC -O3 MINI3D.C -O MINI3D.EXE -LGDI32
- MSVC: CL -O2 -NOLOGO MINI3D.C
- เวอร์ชันที่รวบรวม: https://github.com/skywind3000/mini3d/releases
การสาธิต
การเติมพื้นผิว: render_state_texture
การเติมสี: render_state_color
การวาด wireframe: render_state_wireframe
เพิ่มแสงและการแก้ไขเชิงเส้นกำลังสอง (ภาพหน้าจอของเอฟเฟกต์แสงที่เพิ่มโดยเพื่อนใน MINI3D)
การบ้านขั้นพื้นฐาน
- เพิ่มการลบกลับ
- เพิ่มแสงง่าย ๆ
- ให้โหมดการแสดงผลเพิ่มเติม
- ใช้การอ่านพื้นผิวของความแตกต่างเชิงเส้นกำลังสอง
การบ้านขั้นสูง
- อนุมานและพิสูจน์ความรู้ทางเรขาคณิตทั้งหมดที่ใช้ในโปรแกรม
- เพิ่มประสิทธิภาพประสิทธิภาพการคำนวณจุดสุดยอด
- เพิ่มประสิทธิภาพประสิทธิภาพการทำงาน draw_scanline
- กำลังโหลดพื้นผิวจากไฟล์ BMP/TGA
- โหลดสถานการณ์ BSP และใช้งานการโรมมิ่ง
คำอธิบายหลักการ
- Wei Yixiao: OpenGL และ DirectX รับตำแหน่งพิกเซลได้อย่างไรเมื่อรู้จักจุดยอดเท่านั้น?
- Wei Yixiao: คอมพิวเตอร์เข้าถึงกราฟิกการ์ดได้อย่างไร?
โครงการที่เกี่ยวข้อง
- RenderHelp: การใช้งาน Soft Renderer ที่มีความคล่องตัวอีกอย่างหนึ่งที่รองรับท่อส่งสัญญาณที่ตั้งโปรแกรมได้ดูการแนะนำรายละเอียด
ยินดีต้อนรับการบริจาค
การบริจาคของคุณเป็นการยืนยันที่ยิ่งใหญ่ที่สุดของบทช่วยสอนนี้ การบริจาคจะถูกใช้เพื่อปรับปรุงเอกสารการสอนและตำนานรวมถึงช่วยฉันเขียนบทเรียนที่น่าสนใจมากขึ้น
ยินดีต้อนรับสู่การติดตาม
บล็อก: https://skywind.me/blog
Zhihu: https://www.zhihu.com/people/skywind3000