美文网首页WebGL
用webgl绘制一个点

用webgl绘制一个点

作者: 狂暴机甲 | 来源:发表于2018-03-27 18:44 被阅读8次

绘制一个红色的点,大小20px*20px。

首先我们使用canvas实现一下,只要绘制出一个矩形就可以了,主代码只有三行。
1、 获取canvas 2d上下文。
2、 设置填充颜色红色。
3、 绘制矩形,这里使用了绘制矩形的方法。
canvas代码:

    var context = document.getElementById('canvas').getContext('2d');
    context.fillStyle = "#ff0000";
    context.fillRect(240,240,20,20);

然后使用webgl绘制出同样的效果。主代码有30行,差别还是非常大的。
webgl代码:

<!--2018年3月27日-->
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>用webgl绘制一个点</title>
</head>
<body>
<canvas id="canvas" width="500" height="500" style="background-color: #555555"></canvas>
<script type="text/javascript">
    var ctx = document.getElementById('canvas').getContext('webgl');

    var vertexShaderSource = "" +
        "attribute vec4 aPos;" +
        "void main(){" +
        "gl_Position = aPos;" +
        "gl_PointSize = 20.0;" +
        "}";
    var fragmentShaderSource = "" +
        "void main(){" +
        "gl_FragColor = vec4(1.0,0.0,0.0,1.0);" +
        "}";

    function iniShaders(gl,vertexShaderSource,fragmentShaderSource) {
        var program = gl.createProgram();
        var vertexShader = gl.createShader(gl.VERTEX_SHADER);
        var fragmentShader = gl.createShader(gl.FRAGMENT_SHADER);
        gl.shaderSource(vertexShader,vertexShaderSource);
        gl.shaderSource(fragmentShader,fragmentShaderSource);
        gl.compileShader(vertexShader);
        gl.compileShader(fragmentShader);
        gl.attachShader(program,vertexShader);
        gl.attachShader(program,fragmentShader);
        gl.linkProgram(program);
        gl.useProgram(program);
        return program;
    }

    var program = iniShaders(ctx,vertexShaderSource,fragmentShaderSource);
    var aPoLocation = ctx.getAttribLocation(program,'aPos');
    ctx.vertexAttrib4f(aPoLocation,0.0,0.0,1.0,1.0);
    ctx.drawArrays(ctx.POINTS,0,1);
</script>
</body>
</html>

最终效果,两者完全一样。


红色点.png

相关文章

  • webgl基础图形

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

  • 用webgl绘制一个点

    绘制一个红色的点,大小20px*20px。 首先我们使用canvas实现一下,只要绘制出一个矩形就可以了,主代码只...

  • webgl 缓冲区

    前言:前面写到了用 webgl绘制点的过程.在绘制多个的时候用了一个数组来保存点位信息,每次都循环该数组,并调用 ...

  • TWaver3D直线、曲线、曲面的绘制

    1. WebGL原生线 WebGL支持绘制点、线、三角;绘制线的方法比较简单,给定顶点,设置绘制方式即可; 假设给...

  • 用线段绘制球体(three.js webgl_lines_spe

    用线段绘制球体(three.js webgl_lines_spere例子) Three.js中的webgl_lin...

  • WebGL 绘制Line的bug(一)

    熟悉WebGL的同学都知道,WebGL绘制模式有点、线、面三种;通过点的绘制可以实现粒子系统等,通过线可以绘制一些...

  • webgl 点击绘制点

    index.html cuon-utils.js

  • webgl 绘制多个点

    在是使用 js 定点位的时候,需要建立一份顶点数据给着色器.让着色器根据这份顶点数据绘图 建立顶点数据,两个浮点数...

  • WebGL入门

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

  • 《WebGL编程指南》学习笔记6——绘制矩形

    本系列仅作为本人学习《WebGL编程指南》这本书的笔记所用 WebGL只能绘制 点、线、三角形,万物都可以用三角形...

网友评论

    本文标题:用webgl绘制一个点

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