美文网首页
WebGL(画一个点)

WebGL(画一个点)

作者: JetLu | 来源:发表于2016-07-26 22:23 被阅读487次

什么是WebGL


WebGL使得在支持HTMLcanvas标签的浏览器中,不需要安装任何插件,便可以使用基于OpenGL ES 2.0APIcanvas中进行3D渲染。WebGL程序包括用JavaScript写的控制代码,以及在图形处理单元(GPU)中执行的特效代码(shader code)。WebGL元素可以和其他 HTML元素混合使用,并且可以和网页其他部分或者网页背景结合起来。—— MDN

虽然WebGL也是利用HTMLcanvas元素,但是比2D难以驾驭多了。下面先从画一个点开始,进入WebGL的世界。

准备一个html文件


<!DOCTYPE html>
<html>
    <head>
        <style type="text/css">
            html, body {
                width: 100%;
                height: 100%;
                margin: 0;
                padding: 0;
            }
            canvas {
                position: absolute;
                display: block;
                top: 0;
                bottom: 0;
                left: 0;
                right: 0;
                margin: auto;
                border: 1px solid #999;
            }
        </style>
    </head>
    <body>
        <canvas width="1000" height="500"></canvas>
        <!--引入js路径-->
        <script src="gl.js" charset="utf-8"></script>
    </body>
</html>

上面这段代码很简单,就是创建一个html文件里面包含一个canvas元素,并设置一下相关样式。

创建gl.js文件


const gl = document.querySelector('canvas').getContext('webgl')

if (!gl) alert('Failed to get webgl')



// 着色器源代码
const VSHADER_SRC = `
    void main() {
        gl_Position     = vec4(.0, .0, .0, 1.0);
        gl_PointSize     = 10.0;
    }
`

const FSHADER_SRC = `
    void main() {
        gl_FragColor = vec4(.0, .0, 1.0, 1.0);
    }
`
gl.clearColor(1.0, .0, .0, .2)
gl.clear(gl.COLOR_BUFFER_BIT)


// 创建着色器对象
const fShader = gl.createShader(gl.FRAGMENT_SHADER)
const vShader = gl.createShader(gl.VERTEX_SHADER)

// 将着色器源码写入对象
gl.shaderSource(vShader, VSHADER_SRC)
gl.shaderSource(fShader, FSHADER_SRC)

// 编译着色器
gl.compileShader(vShader)
gl.compileShader(fShader)

// 创建程序
const program = gl.createProgram()

// 程序绑定着色器
gl.attachShader(program, vShader)
gl.attachShader(program, fShader)

// 链接程序
gl.linkProgram(program)

// 使用程序
gl.useProgram(program)

// 绘制点
gl.drawArrays(gl.POINTS, 0, 1)

如果你没有研究过WebGL一定对上面的代码很陌生,是不是没有一点JavaScript的感觉。哈哈,那就对了。运行成功后,应该是这个样子

分步介绍


未完待续……

相关文章

  • WebGL(画一个点)

    什么是WebGL WebGL使得在支持HTML的canvas标签的浏览器中,不需要安装任何插件,便可以使用基于Op...

  • webgl 3.画一个点

    对于初学者来说 initShaders 的具体实现可以先忽略,这个方法主要是编译链接 shader 的。仔细读一遍...

  • webgl 4.画一个点2

    上节我们画了一个点,不过点的位置和大小都是写死的,这节我们看看怎么传递数据到 shader 中。 有 2 种方式可...

  • webgl基础图形

    WebGL的工作是绘制图形图像,了解WebGL的图形是至关重要的。 一、点 在WebGL中点是一个正方形,用一个三...

  • WebGL 的 Hello World

    本文整理自 div 侠于 凹凸 2022 年技术分享,简单介绍了 WebGL 画一个基础图形的流程,希望你了解之后...

  • webgl 9.画一个圆

    前面我们学习了复杂的物体都可以由多个三角形组成。所以可以用多个三角形去拟合一个圆形。 如图我们可以把圆等分成 N ...

  • webgl 8.画一个正方形

    前面我们说 webgl 只能画点、线、三角形 3 种基本图形,那么我想画一个球,画一个宇宙飞船怎么办呢?图形学中复...

  • threejs Light

    WebGL and Threejs: Lightig 什么是webgl和threejs? webgl是一个在浏览器...

  • threejs Light

    WebGL and Threejs: Lightig 什么是webgl和threejs? webgl是一个在浏览器...

  • WebGL入门

    初识WebGL 01-手动绘制一个WebGL图形 实现的步骤: 添加一个画布元素 获取到画布元素的基于webgl上...

网友评论

      本文标题:WebGL(画一个点)

      本文链接:https://www.haomeiwen.com/subject/fxfojttx.html