ดำเนินการต่อ
ในส่วนก่อนหน้านี้ ฉันสอนวิธีวาดรูปสามเหลี่ยมและรูปสี่เหลี่ยมขนมเปียกปูน ส่วนนี้จะสอนวิธีเพิ่มการแรเงา 2 แบบให้กับรูปสามเหลี่ยมและรูปสี่เหลี่ยม ใช้สีเรียบเพื่อทาสีรูปสี่เหลี่ยมด้วยสีคงที่ ใช้การระบายสีแบบเรียบเพื่อผสมผสานสีต่างๆ ของจุดยอดทั้งสามของรูปสามเหลี่ยมเข้าด้วยกันเพื่อสร้างการผสมผสานสีที่สวยงาม
แก้ไข glDraw ต่อไปในส่วนก่อนหน้า
ขั้นตอน glDraw();
เริ่ม
glClear(GL_COLOR_BUFFER_BIT หรือ GL_DEPTH_BUFFER_BIT); // ล้างหน้าจอและบัฟเฟอร์ความลึก
glLoadIdentity(); //รีเซ็ตเมทริกซ์การสังเกตโมเดลปัจจุบัน
glTranslatef(-1.5, 0.0, -6.0); // เลื่อนไปทางซ้าย 1.5 หน่วยและเข้าสู่หน้าจอ 6.0
glBegin(GL_TRIANGLES); // วาดรูปสามเหลี่ยม
//glColor3f(r,g,b) พารามิเตอร์ทั้งสามในวงเล็บคือส่วนประกอบสีแดง เขียว และน้ำเงินตามลำดับ
//ช่วงค่าสามารถอยู่ระหว่าง 0,0 ถึง 1.0 คล้ายกับคำสั่งล้างพื้นหลังหน้าจอที่กล่าวถึงก่อนหน้านี้
//เราตั้งค่าสีเป็นสีแดง (แดงล้วน ไม่เขียว ไม่น้ำเงิน)
// บรรทัดถัดไปของโค้ดจะตั้งค่าจุดยอดแรกของรูปสามเหลี่ยม (จุดยอดด้านบนของรูปสามเหลี่ยม)
//และใช้สีปัจจุบัน (สีแดง) ในการวาด จากนี้ไปวัตถุที่วาดทั้งหมดจะเป็นสีแดง
//จนกว่าเราจะเปลี่ยนสีแดงเป็นอย่างอื่น
glColor3f(1.0, 0.0, 0.0); // ตั้งค่าสีปัจจุบันเป็นสีแดง
glVertex3f(0.0, 1.0, 0.0); // จุดยอดบน
// จุดยอดสีแดงจุดแรกได้รับการตั้งค่าแล้ว
//ต่อไปเราจะตั้งค่าจุดยอดสีเขียวอันที่สอง จุดยอดซ้ายล่างของรูปสามเหลี่ยมจะเป็นสีเขียว
glColor3f(0.0, 1.0, 0.0); // ตั้งค่าสีปัจจุบันเป็นสีเขียว
glVertex3f(-1.0, -1.0, 0.0); // ซ้ายล่าง
//จุดยอดขวาล่างของรูปสามเหลี่ยม ตั้งค่าสีเป็นสีน้ำเงิน
//หลังจาก glEnd() ปรากฏขึ้น รูปสามเหลี่ยมจะเต็ม
//แต่เนื่องจากแต่ละจุดยอดมีสีที่แตกต่างกัน จึงดูเหมือนว่าสีจะพุ่งออกมาจากแต่ละมุม
//และมาบรรจบกันตรงกลางสามเหลี่ยมพอดี โดยทั้งสามสีปนกัน นี่คือการแรเงาที่เรียบเนียน
glColor3f(0.0, 0.0, 1.0); // ตั้งค่าสีปัจจุบันเป็นสีน้ำเงิน
glVertex3f(1.0, -1.0, 0.0); // ขวาล่าง
glEnd(); // สิ้นสุดการวาดรูปสามเหลี่ยม
glTranslatef(3.0, 0.0, 0.0); // เลื่อนไปทางขวา 3 หน่วย
//ตอนนี้เราวาดรูปสี่เหลี่ยมจัตุรัสที่มีสีซ้ำซากจำเจ - สีม่วง
//สิ่งสำคัญที่สุดที่ต้องจำคือทุกสิ่งที่วาดหลังจากตั้งค่าสีปัจจุบันคือสีปัจจุบัน
//ทุกโปรเจ็กต์ที่คุณสร้างต่อจากนี้จะใช้สี
//ถึงแม้ว่าจะใช้การแมปพื้นผิวอย่างเต็มที่ก็ตาม
//glColor3f ยังคงสามารถใช้เพื่อปรับโทนสีของพื้นผิวได้
//เดี๋ยวก่อน...ไว้ค่อยคุยกันทีหลัง
//(555 เล่มเดิมเป็นสีฟ้าแต่ผมชอบสีม่วงนะ)
glBegin(GL_QUADS); // วาดรูปสี่เหลี่ยมจัตุรัส
glColor3f(0.6, 0.2, 2.0); // ตั้งค่าสีปัจจุบันเป็นสีม่วง
glVertex3f(-1.0, 1.0, 0.0); // ซ้ายบน
glVertex3f(1.0, 1.0, 0.0); // มุมขวาบน
glVertex3f(1.0, -1.0, 0.0); // ซ้ายล่าง
glVertex3f(-1.0, -1.0, 0.0); // ขวาล่าง
glEnd(); // สิ้นสุดรูปสี่เหลี่ยมจัตุรัส
จบ;