ในการเริ่มต้นมีแสง
การให้แสง OpenGL มีความเฉพาะเจาะจงซึ่งระบุการดำเนินการทางคณิตศาสตร์บางอย่างที่จะนำไปใช้กับส่วนย่อยซึ่งรวมกับพื้นผิวเพื่อให้ได้สีสุดท้าย
แล้วมี Quake
แผ่นดินไหวไม่ได้ใช้แสงชนิดนี้กับวัตถุหลายอย่าง แต่มันใช้พื้นผิวที่สองเพื่อแสดงแสงซึ่งถูกคูณด้วย (หรือ "ปรับด้วย) พื้นผิวของวัตถุเพื่อให้ได้สีสุดท้าย
อย่างไรก็ตามฮาร์ดแวร์ของเวลาไม่สนับสนุนสิ่งนี้ในการทำงานครั้งเดียว Quake ต้องวาดมันเป็นฉากของวัตถุสองครั้ง:
- วาดทุกอย่างหนึ่งครั้งเพื่อวางพื้นผิวฐาน
- ตั้งค่าโหมดผสมผสานการมอดูเลต
- วาดทุกอย่างเป็นครั้งที่สองเพื่อปรับพื้นผิวแสง
แน่นอนว่านี่ช้า ไม่เพียง แต่รูปทรงเรขาคณิตทั้งหมดจะต้องถูกแปลงและตัดสองครั้ง (ซึ่งในสมัยนั้นเป็นการทำงานของ CPU) แต่ทุกพิกเซลบนหน้าจอถูกสัมผัสสองครั้งในระหว่างการเรนเดอร์
ป้อนมัลติไซต์
Multitexture เป็นวิธีการแก้ปัญหานี้และเดิมถูกเปิดเผยผ่านส่วนขยาย GL_SGIS_multitexture ซึ่งมีอยู่ในการ์ด 3DFX ของผู้บริโภคเท่านั้น เดิมทีอนุญาตเพียงการผสมพื้นผิวสองแบบเท่านั้น (และด้วยโหมดการผสมผสานแบบ จำกัด )
หากต้องการอ้างอิงจากต้นฉบับGLQuake readme :
GL_SGIS_multitexture
รองรับ Multitextures ช่วยให้ฮาร์ดแวร์บางตัวแสดงผลโลกในครั้งเดียวแทนที่จะเป็นสอง GLQuake ใช้การผ่านสองครั้งครั้งแรกสำหรับพื้นผิวโลกและครั้งที่สองสำหรับ Lightmaps ที่ผสมกับพื้นผิว ในฮาร์ดแวร์บางตัวด้วย GL_SIGS_multitexture รองรับการใช้งาน OpenGL สิ่งนี้สามารถทำได้ในครั้งเดียว สำหรับฮาร์ดแวร์ที่รองรับสิ่งนี้คุณจะได้รับอัตราเฟรมเพิ่มขึ้น 60% ถึง 100% ปัจจุบันเฉพาะการ์ด TMX คู่ TMU (เช่น Obsidian 2220) เท่านั้นที่รองรับส่วนขยายนี้ แต่ฮาร์ดแวร์อื่น ๆ จะตามมาในไม่ช้า
สิ่งสำคัญคือต้องจำไว้ว่าในขณะนี้มีผลกระทบเช่นการทำแผนที่ปกติแสงแบบต่อพิกเซลชนิดอื่นแม้แต่เฉดสีและอื่น ๆก็ไม่มีอยู่จริง (อย่างที่พวกเขาทำได้ แต่ส่วนใหญ่เป็นเพียงเอกสารทางวิชาการและโครงการวิจัยและ ไม่ถือว่าใช้การได้ในการแสดงผลแบบเรียลไทม์)
และจนถึงปัจจุบัน
จากตรงนี้มันค่อนข้างจะอธิบายไว้ในคำตอบอื่น ๆ Multitexturing กลายเป็นคุณสมบัติมาตรฐานเมื่อเวลาผ่านไปโดยมีโหมดการผสมผสานที่พร้อมใช้งานมากขึ้นและในที่สุดก็ให้วิธีการรหัส shader โดยพลการ
แต่สิ่งที่สำคัญสำหรับวัตถุประสงค์ของคำถามของคุณคือ: ในตอนแรกฟังก์ชันมาตรฐานก็สามารถใช้พื้นผิวได้ครั้งละหนึ่งการแสดงผลเท่านั้น ความสามารถในการใช้มากกว่าหนึ่งฟังก์ชั่นเพิ่มเติมที่รองรับเฉพาะฮาร์ดแวร์ระดับสูงเท่านั้นและจำเป็นต้องใช้ชื่อ ชื่อนั้นอาจเป็น "การทำพื้นผิวแบบดูอัล" (เนื่องจากการใช้งานครั้งแรกเพียงรองรับสองพื้นผิว) แต่ด้วยตาเดียวในอนาคตชื่อ "multitexture" จึงถูกเลือก
การอ่านเพิ่มเติมเกี่ยวกับประวัติทั้งหมดนี้มีอยู่ที่นี่และการเขียนเชิงประวัติศาสตร์ที่ดี (จากบริบทที่กว้างขึ้นและการเล่นมัลติทาสกิ้งบางส่วนในนั้น) ที่คำตอบของโปรแกรมเมอร์