Toggle navigation
在线编辑器
在线代码
文本比较
jQuery下载
前端库
在线手册
登录/注册
下载代码
html
css
js
分享到微信朋友圈
X
html
css
body { display:flex; justify-content:center; align-items:center; overflow:hidden; padding:0px; margin:0px }
JavaScript
class RenderLoop { constructor(cb, fps = 0) { this.currentFps = 0; this.isActive = false; this.msLastFrame = performance.now(); this.cb = cb; this.totalTime = 0; if (fps && typeof fps === 'number' && !Number.isNaN(fps)) { this.msFpsLimit = 1000 / fps; this.run = () => { const currentTime = performance.now(); const msDt = currentTime - this.msLastFrame; this.totalTime += msDt; const dt = msDt / 1000; if (msDt >= this.msFpsLimit) { this.cb(dt, this.totalTime); this.currentFps = Math.floor(1.0 / dt); this.msLastFrame = currentTime; } if (this.isActive) window.requestAnimationFrame(this.run); }; } else { this.run = () => { const currentTime = performance.now(); const dt = (currentTime - this.msLastFrame) / 1000; this.totalTime += (currentTime - this.msLastFrame); this.cb(dt, this.totalTime); this.currentFps = Math.floor(1.0 / dt); this.msLastFrame = currentTime; if (this.isActive) window.requestAnimationFrame(this.run); }; } } changeCb(cb) { this.cb = cb; } start() { this.msLastFrame = performance.now(); this.isActive = true; window.requestAnimationFrame(this.run); return this; } stop() { this.isActive = false; return this; } } let startTime = performance.now(); const initGl = (canvas, vertexShaderSrc, fragShaderSrc) => { const gl = canvas.getContext('webgl2'); if (!gl) { document.write('Please change to a browser which supports WebGl 2.0~'); return; } // set background gl.clearColor(0, 0, 0, 0.9); const vertexShader = gl.createShader(gl.VERTEX_SHADER), fragmentShader = gl.createShader(gl.FRAGMENT_SHADER); gl.shaderSource(vertexShader, vertexShaderSrc.trim()); gl.shaderSource(fragmentShader, fragShaderSrc.trim()); gl.compileShader(vertexShader); gl.compileShader(fragmentShader); if (!gl.getShaderParameter(vertexShader, gl.COMPILE_STATUS)) { console.error(gl.getShaderInfoLog(vertexShader)); return; } if (!gl.getShaderParameter(fragmentShader, gl.COMPILE_STATUS)) { console.error(gl.getShaderInfoLog(fragmentShader)); return; } let program = gl.createProgram(); gl.attachShader(program, vertexShader); gl.attachShader(program, fragmentShader); gl.linkProgram(program); if (!gl.getProgramParameter(program, gl.LINK_STATUS)) { console.log(gl.getProgramInfoLog(program)); } gl.useProgram(program); return {gl, program}; } const cvs = document.querySelector('#cvs'); const vertexShaderSrc = document.querySelector('#vertex').text.trim(); const fragShaderSrc = document.querySelector('#fragment').text.trim(); const { gl, program } = initGl(cvs, vertexShaderSrc, fragShaderSrc); gl.enable(gl.DEPTH_TEST); let vertexBuffer = gl.createBuffer(); let indexBuffer = gl.createBuffer(); gl.bindBuffer(gl.ARRAY_BUFFER, vertexBuffer); gl.bufferData(gl.ARRAY_BUFFER, new Float32Array([-1.0, 1.0, -1.0, -1.0, 1.0, -1.0, 1.0, 1.0 ]), gl.STATIC_DRAW); gl.vertexAttribPointer(0, 2, gl.FLOAT, false, 0, 0); gl.enableVertexAttribArray(0); gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, indexBuffer); gl.bufferData(gl.ELEMENT_ARRAY_BUFFER, new Uint16Array([1, 0, 2, 3]), gl.STATIC_DRAW); const uStartIndex = gl.getUniformLocation(program, 'u_start'); gl.uniform1f(uStartIndex, performance.now()); const uResolution = gl.getUniformLocation(program, 'iResolution'); const { width, height } = cvs.getBoundingClientRect(); gl.uniform2f(uResolution, width, height); const uTimeIndex = gl.getUniformLocation(program, 'iTime'); new RenderLoop(function(dt, tInMs) { gl.uniform1f(uTimeIndex, tInMs / 1000.0); gl.clear(gl.COLOR_BUFFER_BIT | gl.DEPTH_BUFFER_BIT); gl.drawElements(gl.TRIANGLE_STRIP, 4, gl.UNSIGNED_SHORT, 0); }).start(); console.log('render time', performance.now() - startTime);
粒子
时间
文字
hover
canvas
3d
游戏
音乐
火焰
水波
轮播图
鼠标跟随
动画
css
加载动画
导航
菜单
按钮
滑块
tab
弹出层
统计图
svg
×
Close
在线代码下载提示
开通在线代码永久免费下载,需支付20jQ币
开通后,在线代码模块中所有代码可终身免费下!
您已开通在线代码永久免费下载,关闭提示框后,点下载代码可直接下载!
您已经开通过在线代码永久免费下载
对不起,您的jQ币不足!可通过发布资源 或
直接充值获取jQ币
取消
开通下载
<!doctype html> <html> <head> <meta charset="utf-8"> <title>我的宇宙-jq22.com</title> <script src="https://www.jq22.com/jquery/jquery-1.10.2.js"></script> <style>
</style> </head> <body>
<script>
</script>
</body> </html>
2012-2021 jQuery插件库版权所有
jquery插件
|
jq22工具库
|
网页技术
|
广告合作
|
在线反馈
|
版权声明
沪ICP备13043785号-1
浙公网安备 33041102000314号