webgL阶段1一03结合JS更具扩展性

<!DOCTYPE html>
<html lang="zh">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>WebGL</title>
</head>

<body onload="main()">
    <canvas id="canvas" width="400" height="400">
        please use the brower supporting "canvas"
    </canvas>
    <script src="../static/JS/webgl-utils.js"></script>
    <script src="../static/JS/webgl-debug.js"></script>
    <script src="../static/JS/cuon-utils.js"></script>
    <script src="../static/JS/cuon-matrix.js"></script>
    <script>
        function main() {
            /* CSEL ES语言------------开始 */
            /* 
            顶点着色器程序  (存储限定符   类型  变量名)
             */
            var VSHADER_SOURCE =
                'attribute vec4 a_Position;\n' +
                'attribute float a_PointSize;\n' +
                'void main(){\n' + 'gl_Position = a_Position;\n' + //设置坐标
                'gl_PointSize = a_PointSize;\n' + // 设置尺寸(中心点大小,必须带上小数点.0)
                '}\n';
            /* 
            片元着色器程序
             */
            var FSHADER_SOURCE =
                'void main(){\n' +
                'gl_FragColor=vec4(0,1,1,1);}'; // 设置颜色rgba
            /* CSEL ES语言------------结束 */
            var ctx = document.getElementById('canvas');
            var gl = getWebGLContext(ctx);
            if (!gl) return;
            // 初始化着色器
            if (!initShaders(gl, VSHADER_SOURCE, FSHADER_SOURCE)) {
                console.log('初始化着色器失败');
                return;
            }
            // 获取attribute变量存储位置(注意:gl.program(程序对象)是由initShaders函数初始化形成的)
            var a_Position = gl.getAttribLocation(gl.program, 'a_Position');
            var a_PointSize = gl.getAttribLocation(gl.program, 'a_PointSize');
            if (a_Position < 0) {
                console.log('未能获取存储变量a_Position的位置')
                return;
            }
            if (a_PointSize < 0) {
                console.log('未能获取存储变量a_PointSize的位置')
                return;
            }
            /* webgl函数命名规范 => 函数名 参数个数 参数类型 */
            // 将顶点位置传输给   attribute 变量
            gl.vertexAttrib3f(a_Position, 0, 0, 0); // webgl中心点不在左上角,而在图形中心
            gl.vertexAttrib1f(a_PointSize, 25.0);
            /* vertexAttrib1f => vertexAttrib-1-f => 函数名-gl.vertexAttrib--参数个数-1--参数类型-f(float浮点型) =>  */
            // 设置背景色
            gl.clearColor(1, .5, 0, 1);
            // 清空canvas(注意:清空前,需要设定背景色)
            gl.clear(gl.COLOR_BUFFER_BIT);
            // 绘制一个点
            gl.drawArrays(gl.POINTS, 0, 15)
        }
    </script>
</body>

</html>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

杀猪刀-墨林

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值