---
title: 'WebGL: 2D and 3D graphics for the web'
slug: Web/API/WebGL_API
translation_of: Web/API/WebGL_API
---
{{WebGLSidebar}}
WebGL (ห้องสมุดกราฟิกเว็บ) เป็น JavaScript API สำหรับการแสดงผลกราฟิก 3 มิติและ 2D แบบโต้ตอบที่มีประสิทธิภาพสูงภายในเว็บเบราว์เซอร์ที่รองรับโดยไม่ต้องใช้ปลั๊กอิน WebGL ทำได้โดยการแนะนำ API ที่สอดคล้องกับ OpenGL ES 2.0 อย่างใกล้ชิดซึ่งสามารถใช้ในองค์ประกอบ HTML5 {{HTMLElement ("canvas")}} ความสอดคล้องนี้ทำให้ API สามารถได้รับประโยชน์จากการเร่งความเร็วของกราฟิกฮาร์ดแวร์ที่อุปกรณ์ของผู้ใช้ใช้
รองรับ WebGL ในFirefox 4+, Google Chrome 9+, Opera 12+, Safari 5.1+, Internet Explorer 11+ และMicrosoft Edge build 10240+; อย่างไรก็ตามอุปกรณ์ของผู้ใช้จะต้องมีฮาร์ดแวร์ที่รองรับคุณสมบัติเหล่านี้
{{anch ("WebGL 2")}} API แนะนำการสนับสนุนชุดคุณลักษณะ OpenGL ES 3.0 เป็นส่วนใหญ่ มีให้ผ่านทาง {{domxref ("WebGL2RenderingContext")}} ส่วนต่อประสาน
องค์ประกอบ {{HTMLElement ("canvas")}} ยังถูกใช้โดยCanvas APIเพื่อทำกราฟิก 2D บนหน้าเว็บ
การอ้างอิง
อินเตอร์เฟสมาตรฐาน
- {{domxref ( "WebGLRenderingContext")}}
- {{domxref ( "WebGL2RenderingContext")}}
- {{domxref ( "WebGLActiveInfo")}}
- {{domxref ( "WebGLBuffer")}}
- {{domxref ( "WebGLContextEvent")}}
- {{domxref ( "WebGLFramebuffer")}}
- {{domxref ( "WebGLProgram")}}
- {{domxref ( "WebGLQuery")}}
- {{domxref ( "WebGLRenderbuffer")}}
- {{domxref ( "WebGLSampler")}}
- {{domxref ( "WebGLShader")}}
- {{domxref ( "WebGLShaderPrecisionFormat")}}
- {{domxref ( "WebGLSync")}}
- {{domxref ( "WebGLTexture")}}
- {{domxref ( "WebGLTransformFeedback")}}
- {{domxref ( "WebGLUniformLocation")}}
- {{domxref ( "WebGLVertexArrayObject")}}
ส่วนขยาย
- {{domxref ( "ANGLE_instanced_arrays")}}
- {{domxref ( "EXT_blend_minmax")}}
- {{domxref ( "EXT_color_buffer_float")}}
- {{domxref("EXT_color_buffer_half_float")}}
- {{domxref("EXT_disjoint_timer_query")}}
- {{domxref("EXT_float_blend")}} {{experimental_inline}}
- {{domxref("EXT_frag_depth")}}
- {{domxref("EXT_sRGB")}}
- {{domxref("EXT_shader_texture_lod")}}
- {{domxref("EXT_texture_compression_bptc")}}
- {{domxref("EXT_texture_compression_rgtc")}}
- {{domxref("EXT_texture_filter_anisotropic")}}
- {{domxref("OES_element_index_uint")}}
- {{domxref("OES_fbo_render_mipmap")}}
- {{domxref("OES_standard_derivatives")}}
- {{domxref("OES_texture_float")}}
- {{domxref("OES_texture_float_linear")}}
- {{domxref("OES_texture_half_float")}}
- {{domxref("OES_texture_half_float_linear")}}
- {{domxref("OES_vertex_array_object")}}
- {{domxref("OVR_multiview2")}}
- {{domxref("WEBGL_color_buffer_float")}}
- {{domxref("WEBGL_compressed_texture_astc")}}
- {{domxref("WEBGL_compressed_texture_atc")}}
- {{domxref("WEBGL_compressed_texture_etc")}}
- {{domxref("WEBGL_compressed_texture_etc1")}}
- {{domxref("WEBGL_compressed_texture_pvrtc")}}
- {{domxref("WEBGL_compressed_texture_s3tc")}}
- {{domxref("WEBGL_compressed_texture_s3tc_srgb")}}
- {{domxref("WEBGL_debug_renderer_info")}}
- {{domxref("WEBGL_debug_shaders")}}
- {{domxref("WEBGL_depth_texture")}}
- {{domxref("WEBGL_draw_buffers")}}
- {{domxref("WEBGL_lose_context")}}
Events
Constants and types
WebGL 2
WebGL 2 is a major update to WebGL which is provided through the {{domxref("WebGL2RenderingContext")}} interface. It is based on OpenGL ES 3.0 and new features include:
See also the blog post "WebGL 2 lands in Firefox" and webglsamples.org/WebGL2Samples for a few demos.
Guides and tutorials
Below, you'll find an assortment of guides to help you learn WebGL concepts and tutorials that offer step-by-step lessons and examples.
Guides
- Data in WebGL
- A guide to variables, buffers, and other types of data used when writing WebGL code.
- WebGL best practices
- Tips and suggestions to help you improve the quality, performance, and reliability of your WebGL content.
- Using extensions
- A guide to using WebGL extensions.
Tutorials
- WebGL tutorial
- A beginner's guide to WebGL core concepts. A good place to start if you don't have previous WebGL experience.
Examples
- A basic 2D WebGL animation example
- This example demonstrates the simple animation of a one-color shape. Topics examined are adapting to aspect ratio differences, a function to build shader programs from sets of multiple shaders, and the basics of drawing in WebGL.
- WebGL by example
- ชุดตัวอย่างสดพร้อมคำอธิบายสั้น ๆ ที่แสดงแนวคิดและความสามารถของ WebGL ตัวอย่างจะถูกจัดเรียงตามหัวข้อและระดับความยากซึ่งครอบคลุมบริบทการเรนเดอร์ WebGL, การโปรแกรม shader, พื้นผิว, เรขาคณิต, การโต้ตอบกับผู้ใช้และอื่น ๆ
บทเรียนขั้นสูง
- การฉายมุมมองโมเดล WebGL
- คำอธิบายโดยละเอียดของเมทริกซ์หลักสามตัวที่โดยทั่วไปใช้เพื่อแสดงมุมมองวัตถุสามมิติ: แบบจำลองมุมมองและเมทริกซ์การฉายภาพ
- คณิตศาสตร์เมทริกซ์สำหรับเว็บ
- คู่มือที่มีประโยชน์เกี่ยวกับการทำงานของเมทริกซ์การแปลง 3D และสามารถใช้บนเว็บได้ - ทั้งสำหรับการคำนวณ WebGL และในการแปลง CSS3
ทรัพยากร
ห้องสมุด
- glMatrixเป็นเมทริกซ์ JavaScript และไลบรารีเวกเตอร์สำหรับแอป WebGL ประสิทธิภาพสูง
- PhiloGLเป็นเฟรมเวิร์ก WebGL สำหรับการสร้างภาพข้อมูลการสร้างโค้ดและการพัฒนาเกม
- Pixi.jsเป็นตัวเรนเดอร์ WebGL 2D แบบโอเพนซอร์สที่รวดเร็วและรวดเร็ว
- PlayCanvasเป็นนเกมโอเพนซอร์ซ
- Sylvesterเป็นห้องสมุดโอเพนซอร์ซสำหรับจัดการเวกเตอร์และเมทริกซ์ ไม่ได้รับการปรับให้เหมาะสมกับ WebGL แต่มีความแข็งแกร่งมาก
- three.jsเป็นไลบรารี 3D WebGL แบบโอเพนซอร์สที่มีคุณลักษณะครบถ้วน
- Phaserเป็นเฟรมเวิร์กโอเพนซอร์สที่รวดเร็วและสนุกสำหรับเกมเบราว์เซอร์ที่ขับเคลื่อนด้วย Canvas และ WebGL
- RedGL เป็นไลบรารี 3D WebGL แบบโอเพ่นซอร์ส
- vtk.js เป็นห้องสมุด JavaScript สำหรับการสร้างภาพทางวิทยาศาสตร์ในเบราว์เซอร์ของคุณ
ข้อมูลจำเพาะ
สเปค |
สถานะ |
คิดเห็น |
{{SpecName ( 'WebGL')}} |
{{Spec2 ( 'WebGL')}} |
คำจำกัดความเบื้องต้น อ้างอิงจาก OpenGL ES 2.0 |
{{SpecName ( 'WebGL2')}} |
{{Spec2 ( 'WebGL2')}} |
สร้างบน WebGL 1. ขึ้นอยู่กับ OpenGL ES 3.0 |
{{SpecName ('OpenGL ES 2.0')}} |
{{Spec2 ('OpenGL ES 2.0')}} |
|
{{SpecName('OpenGL ES 3.0')}} |
{{Spec2('OpenGL ES 3.0')}} |
|
Browser compatibility
WebGL 1
{{Compat("api.WebGLRenderingContext", 0)}}
WebGL 2
{{Compat("api.WebGL2RenderingContext", 0)}}
Compatibility notes
นอกเหนือจากเบราว์เซอร์แล้ว GPU เองยังต้องการการสนับสนุนคุณสมบัติ ตัวอย่างเช่น S3 การบีบอัดพื้นผิว (S3TC) มีเฉพาะในแท็บเล็ตที่ใช้ Tegra เท่านั้น เบราว์เซอร์ส่วนใหญ่ทำให้บริบท WebGL พร้อมใช้งานผ่านwebgl
ชื่อบริบท แต่เบราว์เซอร์ที่เก่ากว่านั้นต้องการexperimental-webgl
เช่นกัน นอกจากนี้การที่จะเกิดขึ้นWebGL 2webgl2
เป็นอย่างถอยหลังได้และจะมีชื่อบริบท
บันทึกตุ๊กแก
การแก้ไขข้อบกพร่องและการทดสอบ WebGL
เริ่มต้นด้วย Gecko 10.0 {{geckoRelease ("10.0")}} มีการตั้งค่าสองแบบที่ให้คุณควบคุมความสามารถของ WebGL สำหรับการทดสอบ:
webgl.min_capability_mode
- คุณสมบัติบูลีนที่เมื่อ
true
เปิดใช้งานโหมดความสามารถขั้นต่ำ เมื่ออยู่ในโหมดนี้ WebGL จะได้รับการกำหนดค่าให้สนับสนุนชุดคุณลักษณะขั้นต่ำเปลือยและความสามารถที่จำเป็นตามข้อกำหนด WebGL เท่านั้น วิธีนี้ช่วยให้คุณมั่นใจได้ว่ารหัส WebGL ของคุณจะทำงานบนอุปกรณ์หรือเบราว์เซอร์ใด ๆ โดยไม่คำนึงถึงความสามารถของพวกเขา นี่คือfalse
ค่าเริ่มต้น
webgl.disable_extensions
- คุณสมบัติบูลีนที่เมื่อ
true
ปิดใช้งานส่วนขยาย WebGL ทั้งหมด นี่คือfalse
ค่าเริ่มต้น
ดูสิ่งนี้ด้วย