我试图运行的GPU密集的WebGL着色器和任务管理器不可能让我的GPU见顶了约30%的使用率,访问网页,甚至当基准野生WebGL的模拟像这样一个这使得30000鱼在复杂的环境。 也许这是一个WebGL的安全功能? 有什么办法编程,即使它涉及到在浏览器中禁用安全设置(任何浏览器),以强制WebGL的利用GPU的100%?
Answer 1:
那你试试? 这是繁琐的使用你的GPU功率的100%。 只要给它的东西来绘制需要很长的时间。 您链接水族馆的目的不是要做到这一点。
下面是一个繁琐的一个
const gl = document.createElement('canvas').getContext('webgl'); gl.canvas.width = 2048; gl.canvas.height = 2048; const vs = ` attribute vec4 position; void main() { gl_Position = position; } `; const fs = ` precision mediump float; void main() { gl_FragColor = vec4(1); } `; const quad = [ -1, -1, 1, -1, -1, 1, -1, 1, 1, -1, 1, 1, ]; const maxQuads = 50000; const quads = []; for (let i = 0; i < maxQuads; ++i) { quads.push(...quad); } const programInfo = twgl.createProgramInfo(gl, [vs, fs]); const bufferInfo = twgl.createBufferInfoFromArrays(gl, { position: { data: quads, numComponents: 2, }, }); let count = 10; function render() { gl.viewport(0, 0, gl.canvas.width, gl.canvas.height); gl.useProgram(programInfo.program); twgl.setBuffersAndAttributes(gl, programInfo, bufferInfo); gl.drawArrays(gl.TRIANGLES, 0, 6 * count); requestAnimationFrame(render); } requestAnimationFrame(render); document.querySelector('input').addEventListener('input', (e) => { count = Math.min(parseInt(e.target.value), maxQuads); });
<script src="https://twgljs.org/dist/4.x/twgl.min.js"></script> <p>increase number to increase GPU usage. Large numbers will get the browser or OS to reset the GPU.</p> <input type="number" value="10">
对我来说,数值30饱和的GPU,也使一切慢(操作系统需要的GPU太多,但我们正在占用它)
在30每个绘图调用绘制2048x2048x30像素。 这是每绘图调用1.258亿像素。
文章来源: Is WebGL capable of using the GPU's full power?