webGL+JS鼠标事件

1.在onload()函数中

        //按下松开按钮
        //document
        canvas.onmousedown = handleMouseDown;
        canvas.onmouseup  = handleMouseUp;
        canvas.onmousemove  = handleMouseMove;
        canvas.onmouseout = handleMouseOut;

2.down up out

var mouseDown = false;
    var lastMouseX = null;
    var lastMouseY = null;
    var boxRotationMatrix = mat4.create();
    mat4.identity(boxRotationMatrix);
    function handleMouseDown(event) {
        mouseDown = true;
        lastMouseX = event.clientX;
        lastMouseY = event.clientY;
    }
    function handleMouseUp() {
        mouseDown = false;
    }
    function handleMouseOut() {
        mouseDown = false;
    }

3.move

function handleMouseMove(event) {
        if(!mouseDown){
            return;
        }
        var newX = event.clientX;
        var newY = event.clientY;
        var deltaX = newX - lastMouseX;
        var newRotationMatrix = mat4.create();
        mat4.identity(newRotationMatrix);
        mat4.rotate(newRotationMatrix, degToRad(deltaX / 10), [0, 1, 0]);

        var deltaY = newY - lastMouseY;
        mat4.rotate(newRotationMatrix, degToRad(deltaY / 10), [1, 0, 0]);

        mat4.multiply(newRotationMatrix, boxRotationMatrix, boxRotationMatrix);

        lastMouseX = newX;
        lastMouseY = newY;

    }

4.drawscene中写入

 mat4.multiply(mvMatrix,boxRotationMatrix);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值