Analisis mendalam tentang mod pemaparan Kanvas memerlukan contoh kod khusus
1. Pengenalan
Kanvas ialah elemen penting dalam standard HTML5, yang boleh merealisasikan pemaparan grafik berasaskan piksel. Ia menyediakan API yang kaya yang membolehkan pembangun melukis grafik 2D, animasi, permainan, dsb. pada penyemak imbas melalui JavaScript. Apabila menggunakan Kanvas untuk pemaparan grafik, kita perlu memahami dan menguasai mod pemaparan yang berbeza. Artikel ini akan menganalisis secara mendalam mod pemaparan Kanvas dan memberikan contoh kod khusus.
2. Pengenalan kepada mod pemaparan
Terdapat dua mod pemaparan utama Kanvas: mod pemaparan 2D dan mod pemaparan WebGL.
<canvas id="canvas"></canvas> <script> var canvas = document.getElementById('canvas'); var ctx = canvas.getContext('2d'); // 绘制一个矩形 ctx.fillStyle = 'red'; ctx.fillRect(10, 10, 100, 100); // 绘制一个圆形 ctx.beginPath(); ctx.arc(150, 60, 50, 0, 2 * Math.PI); ctx.fillStyle = 'blue'; ctx.fill(); ctx.closePath(); </script>
Dalam contoh kod di atas, kita mula-mula mendapatkan elemen Kanvas melalui kaedah getElementById
dan dapatkan objek konteks 2D ctx
. Kemudian, kami melukis segi empat tepat merah menggunakan kaedah fillRect
dan bulatan biru menggunakan kaedah arka
dan fill
. Melalui operasi mudah ini, kita dapat melihat penggunaan asas mod pemaparan 2D. getElementById
方法获取到了一个Canvas元素,并且获取了2D上下文对象ctx
。然后,我们使用fillRect
方法绘制了一个红色的矩形,使用arc
和fill
方法绘制了一个蓝色的圆形。通过这些简单的操作,我们可以看到2D渲染模式的基本使用。
<canvas id="canvas"></canvas> <script> var canvas = document.getElementById('canvas'); var gl = canvas.getContext('webgl'); // 顶点着色器源码 var vertexShaderSource = ` attribute vec2 a_position; void main() { gl_Position = vec4(a_position, 0, 1); } `; // 片元着色器源码 var fragmentShaderSource = ` void main() { gl_FragColor = vec4(1, 0, 0, 1); } `; // 创建顶点着色器对象 var vertexShader = gl.createShader(gl.VERTEX_SHADER); gl.shaderSource(vertexShader, vertexShaderSource); gl.compileShader(vertexShader); // 创建片元着色器对象 var fragmentShader = gl.createShader(gl.FRAGMENT_SHADER); gl.shaderSource(fragmentShader, fragmentShaderSource); gl.compileShader(fragmentShader); // 创建程序对象 var program = gl.createProgram(); gl.attachShader(program, vertexShader); gl.attachShader(program, fragmentShader); gl.linkProgram(program); gl.useProgram(program); // 顶点数据 var vertices = [ -0.5, -0.5, 0.5, -0.5, 0, 0.5 ]; // 创建缓冲区对象 var buffer = gl.createBuffer(); gl.bindBuffer(gl.ARRAY_BUFFER, buffer); gl.bufferData(gl.ARRAY_BUFFER, new Float32Array(vertices), gl.STATIC_DRAW); // 获取顶点属性位置 var a_position = gl.getAttribLocation(program, 'a_position'); gl.vertexAttribPointer(a_position, 2, gl.FLOAT, false, 0, 0); gl.enableVertexAttribArray(a_position); // 清空画布并绘制三角形 gl.clearColor(0, 0, 0, 1); gl.clear(gl.COLOR_BUFFER_BIT); gl.drawArrays(gl.TRIANGLES, 0, 3); </script>
在上面的代码示例中,我们首先通过getElementById
方法获取到了一个Canvas元素,并且获取了WebGL上下文对象gl
。然后,我们分别定义了顶点着色器和片元着色器的源码,通过createShader
、shaderSource
和compileShader
等方法创建并编译了着色器对象。接着,创建了一个程序对象,并且将顶点着色器和片元着色器附加到程序对象上,并链接和使用该程序对象。然后,定义了顶点数据,并创建了一个缓冲区对象,将顶点数据绑定到缓冲区对象上,并且启用了顶点属性。最后,设置了清空画布的颜色,并且使用drawArrays
WebGL ialah teknologi pemaparan grafik berdasarkan standard OpenGL ES yang boleh melaksanakan pemaparan grafik 3D berprestasi tinggi pada Kanvas. Tidak seperti mod pemaparan 2D, mod pemaparan WebGL memerlukan penggunaan API khusus untuk operasi lukisan. Berikut ialah contoh kod ringkas bagi mod pemaparan WebGL:
getElementById
dan mendapatkan objek konteks WebGL gl
. Kemudian, kami mentakrifkan kod sumber pelorek puncak dan pelorek serpihan masing-masing, dicipta dan disusun melalui kaedah seperti createShader
, shaderSource
dan compileShader
Objek shader. Seterusnya, objek prosedural dicipta, pelorek puncak dan pelorek serpihan dilampirkan pada objek prosedur, dan objek prosedur dipautkan dan digunakan. Kemudian, data puncak ditakrifkan, objek penimbal dicipta, data puncak terikat pada objek penimbal, dan atribut puncak didayakan. Akhir sekali, warna kanvas yang dikosongkan ditetapkan dan segi tiga dilukis menggunakan kaedah drawArrays
. Melalui operasi ini, kita dapat melihat penggunaan asas mod pemaparan WebGL. 🎜🎜3. Summary🎜Canvas ialah alat pemaparan grafik yang berkuasa Dari segi pemilihan mod pemaparan, anda boleh memutuskan untuk menggunakan mod pemaparan 2D atau mod pemaparan WebGL mengikut keperluan sebenar. Artikel ini menyediakan analisis mendalam tentang mod pemaparan Kanvas melalui contoh kod tertentu. Saya harap artikel ini dapat memberikan sedikit bantuan dan panduan kepada pembaca apabila menggunakan Kanvas untuk pemaparan grafik. 🎜Atas ialah kandungan terperinci Analisis mendalam tentang mod pemaparan Kanvas. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!