colorpoint.js

var vshader_src =
        'attribute vec4 a_Position;\n\
        attribute float a_PointSize;\n\
        void main() {\n\
          gl_Position = a_Position;\n\
          gl_PointSize = a_PointSize;\n\
        }';

var fshader_src =
        'precision mediump float;\n\
        uniform vec4 u_FragColor;\n\
        void main() {\n\
            gl_FragColor = u_FragColor;\n\
        }';

function main() {
    var canvas = document.getElementById("webgl");
    var gl = getWebGLContext(canvas, true);
    if (!gl) {
        alert("Failed at getWebGLContext");
        return;
    }

    if (!initShaders(gl, vshader_src, fshader_src)) {
        alert("Failed at initShaders");
        return;
    }

    var a_Position = gl.getAttribLocation(gl.program, 'a_Position');
    if (a_Position < 0) {
        alert("Failed to get a_Position");
        return;
    }
    var a_PointSize = gl.getAttribLocation(gl.program, 'a_PointSize');
    var u_FragColor = gl.getUniformLocation(gl.program, 'u_FragColor');

    //gl.vertexAttrib2f(a_Position, 0, -0.5);
    gl.vertexAttrib2fv(a_Position, new Float32Array([-0.5, -0.5]));
    gl.vertexAttrib1f(a_PointSize, 10);
    gl.uniform4f(u_FragColor, 0, 0, 1, 1);

   

     
	canvas.onmousedown = function(ev) { click(ev,gl,canvas,a_Position,u_FragColor);}
	 gl.clearColor(0, 0, 0, 1);
    gl.clear(gl.COLOR_BUFFER_BIT);
	
}
var g_points = [];
var g_colors = [];
function click(ev,gl,canvas,a_Position,u_FragColor){
	var x = ev.clientX;
	var y = ev.clientY;
	var rect = ev.target.getBoundingClientRect();
	x = ((x-rect.left) -canvas.height/2)/(canvas.height/2);
	y = (canvas.width/2 - (y - rect.top))/(canvas.width/2);
	g_points.push([x,y]);
	if(x>=0.0&&y>=0.0){
		g_colors.push([1.0,0.0,0.0,1.0]);
	}else if(x<0.0&&y<0.0){
		g_colors.push([0.0,1.0,0.0,1.0]);
	}else {
		g_colors.push([1.0,1.0,1.0,1.0]);
	}
	
	
	gl.clear(gl.COLOR_BUFFER_BIT);
	var len = g_points.length;
	for(var i=0;i<len;i++){
		var xy=g_points[i];
		var rgba=g_colors[i];
		
		gl.vertexAttrib3f(a_Position,xy[0],xy[1],0.0);
		gl.uniform4f(u_FragColor,rgba[0],rgba[1],rgba[2],rgba[3]);
		
		gl.drawArrays(gl.POINTS,0,1);
	}
}
 




login.jsp

<html>
 <head>
  <title>Wormhole</title>
 </head>
 <body onload="main()">
   <canvas id="webgl" width="400" height="400"></canvas>
   <script src="../lib/webgl-utils.js"></script>
   <script src="../lib/webgl-debug.js"></script>
   <script src="../lib/cuon-utils.js"></script>
   <script src="hellocanvas.js"></script>
 </body> 
</html>


### JavaScript 基础知识总结 #### 注释的使用 为了增强代码的理解性和可读性,在编写JavaScript程序时可以加入注释。单行注释通过两个斜杠`//`实现,而多行注释则被包裹在`/* */`之间[^1]。 #### 变量声明数据类型 JavaScript支持多种变量声明方式,包括`var`, `let` 和 `const`. 同时也拥有丰富的内置数据类型如字符串(String),数值(Number),布尔(Boolean), 对象(Object)以及数组(Array)[^4]. #### 函数定义 函数是执行特定任务的一段代码集合。可以通过命名函数或匿名函数的形式创建,并且允许传递参数给这些函数以便于操作不同的输入值。箭头函数(arrow function)也是ES6引入的一种简洁表达方法之一[^5]. #### 类(class)的概念及其继承机制 类是一种面向对象编程中的重要概念,用来描述具有相同属性和行为的对象模板。当涉及到子类扩展父类的功能时,则会用到关键字`extends`配合构造器内的`super()`调用来完成这一过程[^3]: ```javascript class Point { constructor(x, y){ this.x = x; this.y = y; } } class ColorPoint extends Point{ constructor(x,y,color){ super(x,y); // 调用父级构造器初始化x,y坐标 this.color=color; // 新增color属性 } } ``` #### React.js 库简介 对于前端框架的选择上,React.js作为Facebook推出的一个开源项目受到了广泛欢迎。作为一个用于构建用户界面(UI)的JavaScript库,其核心优势在于组件化的开发模式——即把整个页面分解成多个独立的小部件来进行管理;除此之外还提供了诸如JSX语法糖衣、高效的虚拟DOM更新策略等功能特性[^2]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值