gpt4 book ai didi

javascript - WebGL 警告 : "Attribute 0 is disabled. This has significant performance penalty"

转载 作者:太空狗 更新时间:2023-10-29 15:22:25 26 4
gpt4 key购买 nike

当我运行下面的 JavaScript/WebGL 代码时(请向下滚动),我在我的开发控制台中看到以下警告消息:

[.WebGLRenderingContext]
PERFORMANCE WARNING: Attribute 0 is disabled.
This has significant performance penalty

下面的代码成功地在 Canvas 上绘制了一个白点。但是,我希望警告消失。我需要更改以下代码中的哪些内容才能使其停止显示?

HTML:

<!DOCTYPE html>
<html>
<body>
<canvas id="canvas" width="100" height="100"></canvas>
</body>
</html>

JavaScript:

var
VERTEX_SHADER_SOURCE = ""+
"void main() {"+
" gl_Position = vec4(0.0, 0.0, 0.0, 1.0);"+
" gl_PointSize = 10.0;"+
"}",

FRAGMENT_SHADER_SOURCE = ""+
"void main() {"+
" gl_FragColor = vec4(1.0, 1.0, 1.0, 1.0);"+
"}",

canvas = document.getElementById('canvas'),
gl = canvas.getContext('webgl'),

vertexShader = gl.createShader(gl.VERTEX_SHADER),
fragmentShader = gl.createShader(gl.FRAGMENT_SHADER),

shaderProgram = gl.createProgram();

// Compile the shaders.
gl.shaderSource(vertexShader, VERTEX_SHADER_SOURCE);
gl.compileShader(vertexShader);
gl.shaderSource(fragmentShader, FRAGMENT_SHADER_SOURCE);
gl.compileShader(fragmentShader);

// Create linked program.
gl.attachShader(shaderProgram, vertexShader);
gl.attachShader(shaderProgram, fragmentShader);
gl.linkProgram(shaderProgram);
gl.useProgram(shaderProgram);

// Clear the canvas.
gl.clearColor(0.0, 0.0, 0.0, 1.0);
gl.clear(gl.COLOR_BUFFER_BIT);

// Draw the point.
gl.drawArrays(gl.POINTS, 0, 1);

这是一个最小但完整的示例,因此我正在寻找一个答案来明确告诉我要更改的内容。 Here is a JSFiddle of the case .我在 Chrome 30.0.1599.101(在 OS X 10.8.5 上)中运行它。

最佳答案

OpenGL 要求启用属性零,否则它不会渲染任何东西。另一方面,WebGL 所基于的 OpenGL ES 2.0 则没有。因此,如果您不启用属性 0,要在 OpenGL 之上模拟 OpenGL ES 2.0,浏览器必须为您创建一个足够大的缓冲区以容纳您请求绘制的顶点数,并用正确的值填充它(参见 gl.vertexAttrib),将其附加到属性零,并启用它。

它在幕后完成所有这些工作,但重要的是您要知道创建和填充该缓冲区需要时间。浏览器可以进行优化,但在一般情况下,如果您假设您在 OpenGL ES 2.0 上运行并使用属性零作为常量,就像您应该能够做的那样,没有警告,您将没有浏览器代表您模拟 OpenGL ES 2.0 不同于 OpenGL 的功能的想法。

在您的特定情况下,警告没有多大意义。看起来你只画了一个点。但是浏览器要弄清楚这一点并不容易,所以它只会在您绘制时警告您并且属性 0 未启用。

关于javascript - WebGL 警告 : "Attribute 0 is disabled. This has significant performance penalty",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20305231/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com