Html5 canvas 如何在webgl中绘制完美的线条

Html5 canvas 如何在webgl中绘制完美的线条,html5-canvas,webgl,webgl2,twgl.js,Html5 Canvas,Webgl,Webgl2,Twgl.js,我想用webgl画一条完美的线。我没有在上下文中设置任何内容。我应该为canvas.getContext启用、设置或提供什么选项来帮助我画一条看起来不错的线?我想用线性和一些东西(我不知道)给我一条线,它不像楼梯 canvas=document.getElementById('canvas'); canvas.height=window.innerHeight; canvas.width=window.innerWidth; gl=canvas.getContext('webgl2'{ 反别名

我想用webgl画一条完美的线。我没有在上下文中设置任何内容。我应该为canvas.getContext启用、设置或提供什么选项来帮助我画一条看起来不错的线?我想用线性和一些东西(我不知道)给我一条线,它不像楼梯

canvas=document.getElementById('canvas');
canvas.height=window.innerHeight;
canvas.width=window.innerWidth;
gl=canvas.getContext('webgl2'{
反别名:是的,
深度:假,
模板:假
});
总图视口(0,0,画布宽度,画布高度);
数组={
pos:{
NUM组件:2,
数据:[-0.03,-1,0.03,1],
},
};
程序=twgl.createProgramInfo(gl[
`#300版es
高精度浮点;
在vec2位置;
void main(){gl_Position=vec4(pos,0.0,1.0);}`,
`#300版es
高精度浮点;
输出vec4颜色;
void main(){Color.xyz=vec3(0.0);Color.a=1.0;}
`
]);
Attrib=twgl.createBufferInfoFromArrays(gl,数组);
obj={
类型:总帐行,
节目信息:节目,
bufferInfo:Attrib,
//计数:1
};
requestAnimationFrame(()=>twgl.drawObjectList(gl[obj])

我猜
不像楼梯
你指的是别名。根据,可以在检索webgl渲染上下文时启用相应标志

假设您有这样的画布:

<canvas id="canvas"></canvas>

欲了解更多信息,请阅读相应的。

我猜
不喜欢楼梯
是指别名。根据,可以在检索webgl渲染上下文时启用相应标志

假设您有这样的画布:

<canvas id="canvas"></canvas>

有关更多信息,请阅读相应的。

尝试设置比CSS样式属性中的实际大小更好的分辨率(宽度高度属性)。例如:


原始大小:尝试设置比CSS样式属性中的实际大小更好的分辨率(宽度高度属性)。例如:


原版尺寸:您好,很遗憾,您的问题似乎不是很详细。为了获得一些帮助,您应该提供一些代码。让我们看看你到目前为止都做了些什么。也请考虑读《在我看不见星星》。画布是否抗锯齿取决于浏览器。您可以请求它不使用antialias,也不会使用antialias,但如果要求它使用antialias,则允许浏览器忽略您的请求。您可以使画布的大小大于显示的大小。您还可以创建自己的抗锯齿帧缓冲区,并将其解析为画布。但是,您应该知道WebGL2只支持1像素宽的行。你需要做的任何事情。嗨,不幸的是,你的问题似乎不是很详细。为了获得一些帮助,您应该提供一些代码。让我们看看你到目前为止都做了些什么。也请考虑读《在我看不见星星》。画布是否抗锯齿取决于浏览器。您可以请求它不使用antialias,也不会使用antialias,但如果要求它使用antialias,则允许浏览器忽略您的请求。您可以使画布的大小大于显示的大小。您还可以创建自己的抗锯齿帧缓冲区,并将其解析为画布。但是,您应该知道WebGL2只支持1像素宽的行。你需要做的任何事情。我已经做了,但没有任何改变。还是bad@MohamadHoseinAlahdadian请在您的问题中提供一些代码。否则,很难确定确切的问题。这看起来是我放大时你能得到的最好结果。线条的质量也取决于显示器的分辨率。我认为WebGL将MSAA限制在2倍或4倍的最小值(这看起来更像是2倍)。Answare是的,使用GLSL或组合CPU代码+GLSL,通过不同的方法,以不同的结果来改进这一点是可能的。但是,除非你选择一种廉价的类似FSAA的技术(这可能无法解决问题),否则这将需要一整套全新的开发(比如用2个以上的示例手动重新实现MSAA)。此外,你必须记住,WebGL(或OpenGL)并不是专门用黑白来绘制简单的二维几何图形的(要实现这一点,最好使用简单的Context2D)…所以优先权不在AA上,因为这是你应该达到的目标。我已经做到了,但没有改变。它仍然是bad@MohamadHoseinAlahdadian请在你的问题中提供一些代码。否则很难确定确切的问题。这看起来就像我放大时你能得到的一样好。线条的质量这也取决于显示器的分辨率。我认为WebGL将MSAA限制在2倍或4倍的最小值(这看起来更像是2倍)。Ansare是的,可以使用GLSL或组合CPU代码+GLSL,通过各种方法,以不同的结果来改善这一点。但除非您选择廉价的类似FSAA的技术(这可能无法解决问题)这将需要一整套新的开发(如使用2个以上的示例手动重新实现MSAA)。此外,您必须记住,WebGL(或OpenGL)并不专门用于以黑白相间的方式绘制简单的二维几何体(要实现这一点,您最好使用简单的Context2D)…所以优先权不在AA上,因为这是你应该实现的目标。