iOS 8 safari webgl没有抗锯齿功能

iOS 8 safari webgl没有抗锯齿功能,webgl,mobile-safari,Webgl,Mobile Safari,iOS 8上支持webgl的Safari无疑是一个好消息,但在运行我的演示后,我发现没有抗锯齿功能。有什么解决方案吗?您自己的角色?有很多方法可以消除别名。这里有一个。首先检查您是否已经消除了锯齿 var gl = someCanvas.getContext("webgl"); var contextAttribs = gl.getContextAttributes(); if (!contextAttribs.antialias) { // do your own anti-aliasin

iOS 8上支持webgl的Safari无疑是一个好消息,但在运行我的演示后,我发现没有抗锯齿功能。有什么解决方案吗?

您自己的角色?有很多方法可以消除别名。这里有一个。首先检查您是否已经消除了锯齿

var gl = someCanvas.getContext("webgl");
var contextAttribs = gl.getContextAttributes();
if (!contextAttribs.antialias) {
  // do your own anti-aliasing
}
最简单的方法是使画布的后台存储比显示的要大。假设您有一个画布,希望显示一定的大小

canvas.width = desiredWidth * 2;
canvas.height = desiredHeight * 2;
canvas.style.width = desiredWidth + "px";
canvas.style.height = desiredHeight + "px";
现在,画布在绘制时很可能是双线性过滤的。在iOS的情况下,由于它们都是HD-DPI,您可能需要执行4x

canvas.width  = desiredWidth  * 4;
canvas.height = desiredHeight * 4;
canvas.style.width  = desiredWidth  + "px";
canvas.style.height = desiredHeight + "px";
您可以通过查看
window.devicePixelRatio
找到答案。事实上,如果你想要1x1像素,你会这样做

var devicePixelRatio = window.devicePixelRatio || 1;
var overdraw = 1; // or 2
var scale = devicePixelRatio * overdraw;
canvas.width  = desiredWidth  * scale;
canvas.height = desiredHeight * scale;
canvas.style.width  = desiredWidth  + "px";
canvas.style.height = desiredHeight + "px";

否则,另一种方法是渲染到附加到帧缓冲区的纹理,然后将纹理渲染到画布中。

您拥有的角色?有很多方法可以消除别名。这里有一个。首先检查您是否已经消除了锯齿

var gl = someCanvas.getContext("webgl");
var contextAttribs = gl.getContextAttributes();
if (!contextAttribs.antialias) {
  // do your own anti-aliasing
}
最简单的方法是使画布的后台存储比显示的要大。假设您有一个画布,希望显示一定的大小

canvas.width = desiredWidth * 2;
canvas.height = desiredHeight * 2;
canvas.style.width = desiredWidth + "px";
canvas.style.height = desiredHeight + "px";
现在,画布在绘制时很可能是双线性过滤的。在iOS的情况下,由于它们都是HD-DPI,您可能需要执行4x

canvas.width  = desiredWidth  * 4;
canvas.height = desiredHeight * 4;
canvas.style.width  = desiredWidth  + "px";
canvas.style.height = desiredHeight + "px";
您可以通过查看
window.devicePixelRatio
找到答案。事实上,如果你想要1x1像素,你会这样做

var devicePixelRatio = window.devicePixelRatio || 1;
var overdraw = 1; // or 2
var scale = devicePixelRatio * overdraw;
canvas.width  = desiredWidth  * scale;
canvas.height = desiredHeight * scale;
canvas.style.width  = desiredWidth  + "px";
canvas.style.height = desiredHeight + "px";

否则,另一种方法是渲染到附加到帧缓冲区的纹理,然后将纹理渲染到画布中。

非常感谢。我以后再试试。问题是通过放大画布来解决的。再次感谢!嗨,格曼。我知道你是WebGL方面的专家。我遇到了另一个问题:我在等你的答案。非常感谢。我以后再试试。问题是通过放大画布来解决的。再次感谢!嗨,格曼。我知道你是WebGL方面的专家。我遇到了另一个问题:我在等你的答案。