WebGL学习——手动绘制一个图形

1.添加一个画布元素

2.获取画布元素

3.创建一个WebGLRenderingContext对象作为3D渲染的上下文

4.绘制图形

代码:

<body>

    <canvas id="webglCanvas" width="500" height="500"></canvas>

    <script type="text/javascript">

        //获取画布元素

        var cvs = document.getElementById("webglCanvas");

        //获取画布上下文

        var webgl = cvs.getContext("webgl");

        //设置绘制图形填充的颜色

        webgl.clearColor(1.0,1.0,0.0,1.0);

        //调用缓存中值填充图形

        webgl.clear(webgl.COLOR_BUFFER_BIT);

    </script>   

</body>

getContext()方法

var ctx = canvas.getContext(contextType);

var ctx = canvas.getContext(contextType,contextAttributes);

contextType参数有以下四种:

  • “2d”,创建一个CanvasRenderingContext2D对象作为2D渲染的上下文。
  • “webgl”(或“experimental-webgl”),创建一个WebGLRenderingContext对象作为3D渲染的上下文,只在实现了WebGL 2的浏览器上可用,实验性特性。
  • “webgl2”,创建一个WebGL2RenderingContext对象作为3D渲染的上下文,只在实现了WebGL 3的浏览器上可用。
  • “bitmaprenderer”,创建一个ImageBitmapRenderingContext,用于将位图渲染到canvas上下文上,实验性特性。

contextAttributes参数可传递多个参数集合用来创建渲染上下文:

  • 例如:canvas.getContext('webgl', { antialias: false, depth: false });

WebGLRenderingContext.clearColor()

WebGL API的 WebGLRenderingContext.clearColor()方法用于设置清空颜色缓冲时的颜色值。

这指定调用 clear() 方法时使用的颜色值。这些值在 0 到 1 的范围间。

句法

void gl.clearColor(red, green, blue, alpha);

参数

red

一个 GLclampf (en-US) 类型的值,指定清除缓冲时的红色值。默认值:0。

green

一个 GLclampf (en-US) 类型的值,指定清除缓冲时的绿色值。默认值:0。

blue

一个 GLclampf (en-US) 类型的值,指定清除缓冲时的蓝色值。默认值:0。

alpha

一个 GLclampf (en-US) 类型的值,指定清除缓冲时的不透明度。默认值:0。

WebGLRenderingContext.clear()

WebGL API的WebGLRenderingContext.clear()方法使用预设值来清空缓冲。

预设值可以使用clearColor()、clearDepth()或clearStencil()设置。

句法

void gl.clear(mask);

参数

mask

一个用于指定需要清除的的缓冲区的参数。可能的值有:

  • gl.COLOR_BUFFER_BIT //颜色缓冲区
  • gl.DEPTH_BUFFER_BIT //深度缓冲区
  • gl.STENCIL_BUFFER_BIT //模板缓冲区
WebGL是一种基于OpenGL ES的JavaScript API,它允许你在Web浏览器上创建交互式的3D图形,但也可以用于绘制简单的2D图形。要使用WebGL一个二维动物图形,首先你需要设置好基本的HTML结构,然后通过JavaScript和WebGL库(如Three.js或gl-matrix)来进行操作。 以下是一个简单的步骤概述: 1. **引入库**:在HTML中引入Three.js库,例如: ```html <script src="https://cdn.jsdelivr.net/npm/three@0.145/build/three.min.js"></script> ``` 2. **初始化场景**: ```javascript const scene = new THREE.Scene(); ``` 3. **创建画布和渲染器**: ```javascript const canvas = document.createElement('canvas'); const renderer = new THREE.WebGLRenderer({ canvas }); renderer.setSize(window.innerWidth, window.innerHeight); document.body.appendChild(canvas); ``` 4. **定义几何形状**: 你可以使用`THREE.ShapeGeometry`结合`THREE.Path`来创建动物图形。例如,一个简单的圆形可以这样表示: ```javascript const geometry = new THREE.ShapeGeometry(new THREE.CircleGeometry(50, 32)); ``` 5. **着色器和材质**: 创建纹理并应用到几何体上,比如白色背景: ```javascript const material = new THREE.MeshBasicMaterial({ color: 0xffffff }); ``` 6. **创建并添加网格物体**: ```javascript const animalMesh = new THREE.Mesh(geometry, material); scene.add(animalMesh); ``` 7. **渲染动画**: ```javascript function animate() { requestAnimationFrame(animate); renderer.render(scene, camera); } animate(); ``` 8. **定制细节**: 为了制作出更具体的动物形状,你可以添加更多的路径、形状组合,并调整颜色和纹理。 请注意,这只是一个基础示例,实际的动物图形可能需要更复杂的形状定义和纹理贴图。如果你想创建特定动物,你可能需要查找相关的SVG文件或者手绘路径数据。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值