คำจำกัดความของ stencil buffer โดย Wikipedia นั้นไม่ค่อยดีนัก แต่ก็เน้นไปที่รายละเอียดของการใช้งานที่ทันสมัย (OpenGL) มากเกินไป ฉันพบว่ารุ่นที่ไม่เข้าใจง่ายเข้าใจง่ายขึ้น:
stencil คือเทมเพลตที่ใช้ในการวาดหรือระบายสีตัวอักษรสัญลักษณ์รูปร่างหรือรูปแบบที่เหมือนกันทุกครั้งที่ใช้ การออกแบบที่ผลิตโดยแม่แบบดังกล่าวเรียกว่าลายฉลุ
นั่นคือสิ่งที่ stencil หมายถึงก่อนคอมพิวเตอร์กราฟิกส์ หากคุณพิมพ์stencilบน Google Images นี่เป็นหนึ่งในผลลัพธ์แรก:
อย่างที่คุณเห็นมันเป็นเพียงหน้ากากหรือลวดลายที่สามารถใช้เพื่อ "ระบายสี" ลบของลวดลายลงบนบางสิ่ง
ลายฉลุบัฟเฟอร์ทำงานในลักษณะเดียวกันแน่นอน หนึ่งสามารถเติมบัฟเฟอร์ stencil ด้วยรูปแบบที่เลือกโดยการทำ stencil render ผ่านจากนั้นตั้งค่าฟังก์ชัน stencil ที่เหมาะสมซึ่งจะกำหนดวิธีการตีความลวดลายบนภาพวาดที่ตามมาจากนั้นสร้างฉากสุดท้าย พิกเซลที่ตกลงไปในพื้นที่ที่ถูกปฏิเสธของหน้ากากลายฉลุตามฟังก์ชั่นเปรียบเทียบจะไม่ถูกวาด
เมื่อพูดถึงการนำบัฟเฟอร์ stencil มาใช้บางครั้งมันจะมาพร้อมกับบัฟเฟอร์ความลึก ฮาร์ดแวร์กราฟิกส่วนใหญ่ใช้บัฟเฟอร์ stencil 1 ไบต์ (8 บิต) ซึ่งเพียงพอสำหรับการใช้งานส่วนใหญ่ บัฟเฟอร์ความลึกมักจะใช้งานโดยใช้ 3 ไบต์ (24 บิต) ซึ่งโดยปกติจะเพียงพอสำหรับการเรนเดอร์ 3D เกือบทุกชนิด ดังนั้นจึงเป็นเหตุผลที่จะแพ็ค 8 บิตของบัฟเฟอร์ stencil กับอีก 24 ของบัฟเฟอร์ความลึกทำให้เป็นไปได้ที่จะเก็บแต่ละพิกเซลความลึก + stencil ลงในจำนวนเต็ม 32 บิต นั่นคือความหมายของ Wikipedia โดย:
บัฟเฟอร์ความลึกและบัฟเฟอร์ลายฉลุมักใช้พื้นที่เดียวกันใน RAM ของฮาร์ดแวร์กราฟิก
แอปพลิเคชันหนึ่งที่บัฟเฟอร์ stencil เคยเป็นราชาใช้สำหรับการเรนเดอร์เงาในเทคนิคที่เรียกว่าshadow volumeหรือบางครั้งก็เรียกว่าstencil shadowsอย่างเหมาะสม นี่เป็นการใช้บัฟเฟอร์อย่างชาญฉลาด แต่ทุกวันนี้ฟิลด์การเรนเดอร์ส่วนใหญ่ดูเหมือนจะเปลี่ยนไปใช้แผนที่เงาที่มีความลึก
cleaver
clever
ฉันไม่สามารถแก้ไขได้ D: คำตอบที่ยอดเยี่ยมโดยวิธีการนี้ทำให้รู้สึกถึงที่สุด