卜若的代码笔记-webgl系列-第二章:第一个webgl的demo

1.Webgl的组成:

1.1 canvas:

canvas是啥玩意?它是就是你的html里面去用于渲染的一块地方。

在JS里面时一个DOM元素,就非常像我们的Unity里面的GameObject对象的子类Canvas对象

1.2 Objects:

一个渲染常见RenderScene里面的组成元素比如一个圆柱体,一个球体,这种体就是Objects。

 

1.3 Lighting:

你能看到任何物体,都需要它。

 

1.4 Camera

Canvas以Viewport的角度去看待这个RenderWorld。

 

2 创建一个canvas

创建一个canvas
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<canvas id = "mainCanvas" width="500" height="500" style="border: 2px dotted blue;}"></canvas>
</body>
</html>

3 获得webgl的handle(句柄)

function getGLContext(){
    var gl = null;
    var canvas = document.getElementById("mainCanvas");
    if (canvas == null){
        alert("there is no canvas on this page");
        return;
    }
    var names = ["webgl",
        "experimental-webgl",
        "webkit-3d",
        "moz-webgl"];
    for (var i = 0; i < names.length; ++i) {
        try {
            gl = canvas.getContext(names[i]);
        }
        catch(e) {}
        if (gl) break;
    }
    if (gl == null){
        alert("WebGL is not available");
    }
    else{
        alert("Hooray! You got a WebGL context");
    }

    return gl;
}

4.webgl的状态机制:

webgl可以看做是一个种状态机,也就是说,你可以修改webgl里面的某种状态,在你下次修改之前,它会被固化。直到你再次修改它。

任何时候,你都可以去查看这种状态,以便于你能够去确定当前webgl的状态。

4.1 键值的捕获

window.onkeydown = checkKey;
function checkKey(ev){
    switch(ev.keyCode) {
        case 49: { // 1
            console.info("按下了1键");
            break;
        }
    }
}

4.2 第一个webgl_demo

function Color(r,g,b,a) {
    var color = {};
    color.r = r;
    color.g = g;
    color.b = b;
    color.a = a;
    return color;

}
function brush(gl,color) {
    gl.clearColor(color.r,color.g,color.b,color.a);
    gl.clear(gl.COLOR_BUFFER_BIT);

}

4.2 第一个webgl_demo_使用

window.onkeydown = checkKey;
function checkKey(ev){
    switch(ev.keyCode) {
        case 49: { // 1
            brush(gl, Color(0.3,0.3,0.3,1));
            break;
        }
    }

}

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值