原生态webgl--DEMO,以后可能选择Three.JS来代替了,代码网上找的,参考引用

 
  
// experimental-webgl
$(document).ready( function () {

// Gets canvas from the HTML page
var canvas = document.getElementById( ' viewport ' );

// Creates GL context
gl = null ;
try {
gl
= canvas.getContext( ' experimental-webgl ' );
}
catch (e) {
alert(
' Exception catched in getContext: ' + e.toString()); return ;
}

// If no exception but context creation failed, alerts user
if ( ! gl) {
alert(
' Unable to create Web GL context ' ); return ;
}

// Sets clear color to non-transparent dark blue and clears context
gl.clearColor( 0.0 , 0.0 , 0.0 , 1.0 );
gl.clear(gl.COLOR_BUFFER_BIT);

// ---------------- end of part 1 -----------------

// Creates fragment shader (returns white color for any position)
var fshader = gl.createShader(gl.FRAGMENT_SHADER);
gl.shaderSource(fshader,
' void main(void) {gl_FragColor = vec4(1.0, 1.0, 1.0, 1.0);} ' );
gl.compileShader(fshader);
if ( ! gl.getShaderParameter(fshader, gl.COMPILE_STATUS)) {
alert(
' Error during fragment shader compilation:\n ' + gl.getShaderInfoLog(fshader)); return ;
}

// Creates vertex shader (converts 2D point position to coordinates)
var vshader = gl.createShader(gl.VERTEX_SHADER);
gl.shaderSource(vshader,
' attribute vec2 ppos; void main(void) { gl_Position = vec4(ppos.x, ppos.y, 0.0, 1.0);} ' );
gl.compileShader(vshader);
if ( ! gl.getShaderParameter(vshader, gl.COMPILE_STATUS))
{
alert(
' Error during vertex shader compilation:\n ' + gl.getShaderInfoLog(vshader)); return ;
}

// Creates program and links shaders to it
var program = gl.createProgram();
gl.attachShader(program, fshader);
gl.attachShader(program, vshader);
gl.linkProgram(program);
if ( ! gl.getProgramParameter(program, gl.LINK_STATUS)) {
alert(
' Error during program linking:\n ' + gl.getProgramInfoLog(program)); return ;
}

// Validates and uses program in the GL context
gl.validateProgram(program);
if ( ! gl.getProgramParameter(program, gl.VALIDATE_STATUS)) {
alert(
' Error during program validation:\n ' + gl.getProgramInfoLog(program)); return ;
}
gl.useProgram(program);

// Gets address of the input 'attribute' of the vertex shader
var vattrib = gl.getAttribLocation(program, ' ppos ' );
if (vattrib == - 1 ) {
alert(
' Error during attribute address retrieval ' ); return ;
}
gl.enableVertexAttribArray(vattrib);

// Initializes the vertex buffer and sets it as current one
var vbuffer = gl.createBuffer();
gl.bindBuffer(gl.ARRAY_BUFFER, vbuffer);

// Puts vertices to buffer and links it to attribute variable 'ppos'
var vertices = new Float32Array([ 0.0 , 0.5 , - 0.5 , - 0.5 , 0.5 , - 0.5 ]);
gl.bufferData(gl.ARRAY_BUFFER, vertices, gl.STATIC_DRAW);
gl.vertexAttribPointer(vattrib,
2 , gl.FLOAT, false , 0 , 0 );

// Draws the object
gl.drawArrays(gl.TRIANGLES, 0 , 3 );
gl.flush()
});

除了上述代码,什么也不想说,但会把我看过的文章列表贴出来,






http://www.web3dmarket.com/html/tutorial/1.html
 
OK,That's all
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值