Opengl es WebGL2是否自动内置了反别名?

Opengl es WebGL2是否自动内置了反别名?,opengl-es,webgl,webgl2,Opengl Es,Webgl,Webgl2,我一直在阅读这些功能的源代码,并且我继续看到这个选项,但是,我无法在任何地方找到它是否是受支持的功能。您是否只需打开此标志即可获得反别名?有关此功能的更多详细信息?有关WebGL的所有详细信息,请从规范开始。从中可以看到可用的属性,其中antialias默认设置为true: dictionary WebGLContextAttributes { GLboolean alpha = true; GLboolean depth = true; GLboolean stenci

我一直在阅读这些功能的源代码,并且我继续看到这个选项,但是,我无法在任何地方找到它是否是受支持的功能。您是否只需打开此标志即可获得
反别名
?有关此功能的更多详细信息?

有关WebGL的所有详细信息,请从规范开始。从中可以看到可用的属性,其中
antialias
默认设置为
true

dictionary WebGLContextAttributes {
    GLboolean alpha = true;
    GLboolean depth = true;
    GLboolean stencil = false;
    GLboolean antialias = true;
    GLboolean premultipliedAlpha = true;
    GLboolean preserveDrawingBuffer = false;
    WebGLPowerPreference powerPreference = "default";
    GLboolean failIfMajorPerformanceCaveat = false;
};

我强烈建议将
alpha
设置为false,因为这将提高某些系统的整体性能。

有关WebGL的所有详细信息,请从规范开始。从中可以看到可用的属性,其中
antialias
默认设置为
true

dictionary WebGLContextAttributes {
    GLboolean alpha = true;
    GLboolean depth = true;
    GLboolean stencil = false;
    GLboolean antialias = true;
    GLboolean premultipliedAlpha = true;
    GLboolean preserveDrawingBuffer = false;
    WebGLPowerPreference powerPreference = "default";
    GLboolean failIfMajorPerformanceCaveat = false;
};
我强烈建议将
alpha
设置为false,因为这将提高某些系统的整体性能

您是否只需打开此标志即可获得反别名

不,这只是一个要求,不是要求

根据规范:

5.2.1上下文创建参数

反别名

如果该值为true且实现支持抗锯齿,则图形缓冲区将使用其选择的技术(多采样/超采样)和质量执行抗锯齿。如果该值为false或实现不支持抗锯齿,则不执行抗锯齿

还有这个

2.2图纸缓冲区

深度、模具和抗锯齿属性设置为true时是请求,而不是要求。WebGL实现应该尽最大努力来尊重它们。但是,当这些属性中的任何一个设置为false时,WebGL实现不得提供相关功能

通过将其设置为
false
可以告诉浏览器“不要打开抗锯齿”周期。例如,如果您正在制作一个像素化游戏,您可能希望告诉浏览器不要使用反别名

通过不设置该标志,浏览器通常会尝试使用抗锯齿。通过将该标志设置为true,浏览器可能会将其视为提示,但抗锯齿是否发生以及如何发生(使用什么设置或技术等)仍取决于浏览器。通常存在与抗锯齿相关的bug,因此浏览器通常被迫不支持某些GPU的抗锯齿。浏览器也可能基于性能而拒绝。例如,当不设置该标志时,浏览器可能会决定不使用抗锯齿来提高智能手机的性能,然后设置该标志,这可能会暗示应用程序更喜欢抗锯齿而不是性能,但这仍取决于浏览器来决定

这是一个测试

测试(“webgl”);
测试(“webgl2”);
功能测试(webglVersion){
抗锯齿测试(webglVersion,{},“默认值”);
抗锯齿测试(webglVersion,{antialas:true},“true”);
抗锯齿测试(webglVersion,{antialas:false},“false”);
}
函数抗锯齿测试(webglVersion、options、desc){
const canvas=document.createElement(“canvas”);
宽度=2;
高度=2;
const gl=canvas.getContext(webglVersion,选项);
如果(!gl){
日志(webglVersion,“不支持”);
返回;
}
常数vs=`
属性向量4位置;
void main(){
gl_位置=位置;
}
`;
常数fs=`
void main(){
gl_FragColor=vec4(1,0,0,1);
}
`;
const programInfo=twgl.createProgramInfo(gl[vs,fs]);
const bufferInfo=twgl.createBufferInfoFromArrays(gl{
职位:{
NUM组件:2,
数据:[
-1, -1, 
1, -1,
-1,  1,
],
},
});
总账使用程序(programInfo.program);
twgl.setBuffersAndAttributes(总帐、程序信息、缓冲信息);
总图数组(总图三角形,0,3);
常数像素=新的UINT8阵列(2*2*4);
gl.readPixels(0,0,2,1,gl.RGBA,gl.UNSIGNED_字节,像素);
常数IsNotentialIASED=
isRedOrBlack(像素[0])&
isRedOrBlack(像素[4])&
isRedOrBlack(像素[8])&
isRedOrBlack(像素[12]);
日志(webglVersion,'with antialias=',desc,'was',isnotationaliased?'NOT':'','antialiased');
}
函数isRedOrBlack(r){
返回r==255 | | r==0;
}
函数日志(…args){
常量elem=document.createElement(“div”);
elem.textContent=[…args].join(“”);
文件.正文.附件(elem);
}
您是否只需打开此标志即可获得反别名

不,这只是一个要求,不是要求

根据规范:

5.2.1上下文创建参数

反别名

如果该值为true且实现支持抗锯齿,则图形缓冲区将使用其选择的技术(多采样/超采样)和质量执行抗锯齿。如果该值为false或实现不支持抗锯齿,则不执行抗锯齿

还有这个

2.2图纸缓冲区

深度、模具和抗锯齿属性设置为true时是请求,而不是要求。WebGL实现应该尽最大努力来尊重它们。但是,当这些属性中的任何一个设置为false时,WebGL实现不得提供相关功能

通过将其设置为
false
可以告诉浏览器“不要打开抗锯齿”周期。例如,如果您正在制作一个像素化游戏,您可能希望告诉浏览器不要使用反别名

通过不设置该标志,浏览器通常会尝试使用抗锯齿。通过将该标志设置为true,浏览器可能会将其视为提示,但抗锯齿是否发生以及如何发生(使用什么设置或技术等)仍取决于浏览器。通常存在与抗锯齿相关的bug,因此浏览器通常被迫不支持某些GPU的抗锯齿。浏览器也可能基于性能而拒绝。例如,当不设置该标志时,浏览器可能会决定不使用抗锯齿来提高智能手机的性能,然后设置