博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
原生态webgl--DEMO,以后可能选择Three.JS来代替了,代码网上找的,参考引用
阅读量:7213 次
发布时间:2019-06-29

本文共 2852 字,大约阅读时间需要 9 分钟。

 
//
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()
});
除了上述代码,什么也不想说,但会把我看过的文章列表贴出来,
 
OK,That's all

转载于:https://www.cnblogs.com/kkun/archive/2011/07/04/2097591.html

你可能感兴趣的文章
Android进阶笔记:Messenger源码详解
查看>>
MySQL的编译安装
查看>>
使用SSH连接CentOS步骤
查看>>
Elasticsearch 5 Ik+pinyin分词配置详解
查看>>
jsp实现简单的分页
查看>>
阿里云虚拟主机数据库主机怎么看
查看>>
[投稿]通过Web界面在多台服务器上批量创建文件
查看>>
Oracle 性能相关常用脚本(SQL)
查看>>
commit your changes or stash them before you can merge
查看>>
Linux Shell执行原理
查看>>
DATA GUARD架构(一)
查看>>
MapReduce1和Yarn的工作机制
查看>>
awk 以列为域提取文件内容
查看>>
NEC中标里斯本智慧城市项目 助力城市整体数字化变革
查看>>
[转] 大规模服务设计部署经验谈
查看>>
Debian手动修改ip地址
查看>>
Realm的简单使用
查看>>
zabbix使用zabbix 数据库做数据分表
查看>>
Oracle 11g dataguard三种模式以及实时查询(Real-time query)功能设置
查看>>
exchange 2013 lesson 6 CAS HA installing
查看>>