WebGL - บริบท
ในการเขียนแอปพลิเคชัน WebGL ขั้นตอนแรกคือการรับอ็อบเจ็กต์บริบทการแสดงผล WebGL วัตถุนี้โต้ตอบกับบัฟเฟอร์การวาด WebGL และสามารถเรียกใช้เมธอด WebGL ทั้งหมด การดำเนินการต่อไปนี้ดำเนินการเพื่อขอรับบริบท WebGL -
- สร้างผ้าใบ HTML-5
- รับรหัสแคนวาส
- รับ WebGL
การสร้างองค์ประกอบผ้าใบ HTML-5
ในบทที่ 5 เราได้พูดถึงวิธีการสร้างองค์ประกอบผ้าใบ HTML-5 ภายในเนื้อหาของเอกสาร HTML-5 ให้เขียนแคนวาสตั้งชื่อและส่งเป็นพารามิเตอร์ไปยัง id แอตทริบิวต์ คุณสามารถกำหนดขนาดของผืนผ้าใบโดยใช้แอตทริบิวต์ความกว้างและความสูง (ไม่บังคับ)
ตัวอย่าง
ตัวอย่างต่อไปนี้แสดงวิธีสร้างองค์ประกอบผ้าใบที่มีขนาด 500 × 500 เราได้สร้างเส้นขอบให้กับผืนผ้าใบโดยใช้ CSS เพื่อการมองเห็น คัดลอกและวางรหัสต่อไปนี้ในไฟล์ที่มีชื่อmy_canvas.html.
<!DOCTYPE HTML>
<html>
<head>
<style>
#mycanvas{border:1px solid blue;}
</style>
</head>
<body>
<canvas id = "mycanvas" width = "300" height = "300"></canvas>
</body>
</html>
มันจะให้ผลลัพธ์ดังต่อไปนี้ -
รับ Canvas ID
หลังจากสร้างผ้าใบคุณต้องได้รับบริบท WebGL สิ่งแรกที่ต้องทำเพื่อรับบริบทการวาด WebGL คือการรับ id ขององค์ประกอบผืนผ้าใบปัจจุบัน
Canvas ID ได้มาโดยการเรียกใช้เมธอด DOM (Document Object Model) getElementById(). วิธีนี้ยอมรับค่าสตริงเป็นพารามิเตอร์ดังนั้นเราจึงส่งชื่อของผืนผ้าใบปัจจุบันไป
ตัวอย่างเช่นถ้าชื่อผ้าใบคือ my_canvasจากนั้นจะได้รับรหัสแคนวาสตามที่แสดงด้านล่าง
var canvas = document.getElementById('my_Canvas');
รับบริบทการวาด WebGL
ในการรับวัตถุ WebGLRenderingContext (หรือวัตถุบริบทการวาด WebGL หรือบริบท WebGL) ให้เรียกใช้ getContext() วิธีการปัจจุบัน HTMLCanvasElement. ไวยากรณ์ของ getContext () มีดังนี้ -
canvas.getContext(contextType, contextAttributes);
ผ่านสตริง webgl หรือ experimental-webgl เป็น contentType. contextAttributesพารามิเตอร์เป็นทางเลือก (ขณะดำเนินการตามขั้นตอนนี้ตรวจสอบให้แน่ใจว่าเบราว์เซอร์ของคุณใช้WebGLเวอร์ชัน 1 (OpenGL ES 2.0))
ข้อมูลโค้ดต่อไปนี้แสดงวิธีการขอรับบริบทการแสดงผล WebGL ที่นี่gl เป็นตัวแปรอ้างอิงไปยังวัตถุบริบทที่ได้รับ
var canvas = document.getElementById('my_Canvas');
var gl = canvas.getContext('experimental-webgl');
WebGLContextAttributes
พารามิเตอร์ WebGLContextAttributesไม่ได้บังคับ พารามิเตอร์นี้มีตัวเลือกต่างๆที่ยอมรับค่าบูลีนตามรายการด้านล่าง -
ซีเนียร์ | คุณสมบัติและคำอธิบาย |
---|---|
1 | Alpha หากค่าเป็นจริงจะมีบัฟเฟอร์อัลฟาให้กับแคนวาส ตามค่าเริ่มต้นค่าของมันจะเป็นจริง |
2 | depth หากค่าเป็นจริงคุณจะได้บัฟเฟอร์รูปวาดซึ่งมีบัฟเฟอร์ความลึกอย่างน้อย 16 บิต ตามค่าเริ่มต้นค่าของมันจะเป็นจริง |
3 | stencil หากค่าเป็นจริงคุณจะได้บัฟเฟอร์รูปวาดซึ่งมีบัฟเฟอร์ลายฉลุอย่างน้อย 8 บิต ตามค่าเริ่มต้นค่าของมันจะเป็นเท็จ |
4 | antialias หากค่าเป็นจริงคุณจะได้บัฟเฟอร์รูปวาดซึ่งทำหน้าที่ต่อต้านการลบรอยหยัก ตามค่าเริ่มต้นค่าของมันจะเป็นจริง |
5 | premultipliedAlpha หากค่าเป็นจริงคุณจะได้บัฟเฟอร์รูปวาดซึ่งมีสีพร้อมอัลฟ่าที่คูณไว้ล่วงหน้า ตามค่าเริ่มต้นค่าของมันจะเป็นจริง |
6 | preserveDrawingBuffer หากค่าเป็นจริงบัฟเฟอร์จะไม่ถูกล้างและจะคงค่าไว้จนกว่าผู้เขียนจะล้างหรือเขียนทับ ตามค่าเริ่มต้นค่าของมันจะเป็นเท็จ |
ข้อมูลโค้ดต่อไปนี้แสดงวิธีสร้างบริบท WebGL ด้วยบัฟเฟอร์ลายฉลุซึ่งจะไม่ทำงาน anti-aliasing.
var canvas = document.getElementById('canvas1');
var context = canvas.getContext('webgl', { antialias: false, stencil: true });
ในขณะสร้าง WebGLRenderingContext บัฟเฟอร์รูปวาดจะถูกสร้างขึ้น วัตถุบริบทจัดการสถานะ OpenGL และแสดงผลไปยังบัฟเฟอร์รูปวาด
WebGLRenderingContext
เป็นอินเทอร์เฟซหลักใน WebGL แสดงบริบทการวาด WebGL อินเทอร์เฟซนี้มีวิธีการทั้งหมดที่ใช้ในการดำเนินการต่างๆบนบัฟเฟอร์การวาด แอตทริบิวต์ของอินเทอร์เฟซนี้มีให้ในตารางต่อไปนี้
ซีเนียร์ | คุณสมบัติและคำอธิบาย |
---|---|
1 | Canvas นี่คือการอ้างอิงถึงองค์ประกอบผืนผ้าใบที่สร้างบริบทนี้ |
2 | drawingBufferWidth แอตทริบิวต์นี้แสดงถึงความกว้างจริงของบัฟเฟอร์รูปวาด อาจแตกต่างจากแอตทริบิวต์ width ของ HTMLCanvasElement |
3 | drawingBufferHeight แอตทริบิวต์นี้แสดงถึงความสูงจริงของบัฟเฟอร์รูปวาด อาจแตกต่างจากแอตทริบิวต์ความสูงของ HTMLCanvasElement |