为什么我的webgl着色器不能正确更改像素片段?

为什么我的webgl着色器不能正确更改像素片段?,webgl,shader,rounding,precision,pixel,Webgl,Shader,Rounding,Precision,Pixel,我试图得到一个碎片的位置,并改变其位置的颜色,但当我尝试这样做时,我得到了一种奇怪的效果,它们不想被完全改变。 请注意青色是如何出现的,但该部分应该是透明的。似乎发生了一些奇怪的舍入,我不知道如何修复它。这里发生了什么 void main() { vec4 c0 = vec4(0,1,0,1); c0.a *= step(132.0,gl_FragCoord.x); gl_FragColor = c0; } 您需

我试图得到一个碎片的位置,并改变其位置的颜色,但当我尝试这样做时,我得到了一种奇怪的效果,它们不想被完全改变。

请注意青色是如何出现的,但该部分应该是透明的。似乎发生了一些奇怪的舍入,我不知道如何修复它。这里发生了什么

        void main() {
        vec4 c0 = vec4(0,1,0,1);
        c0.a *= step(132.0,gl_FragCoord.x);
        gl_FragColor = c0;
        }

您需要显示更多的代码。你启用了混合吗?你选择了什么混合函数和混合方程。你的画布有阿尔法吗?画布的背景是什么颜色或是其他什么颜色

下面是一个使用您的示例的小程序

“严格使用”;
var gl=twgl.getWebGLContext(document.getElementById(“c”));
var programInfo=twgl.createProgramInfo(gl,[“vs”,“fs]”);
变量数组={
位置:[1,-1,0,1,-1,0,-1,1,0,-1,1,0,1,-1,0,1,1,0],
};
var bufferInfo=twgl.createBufferInfoFromArrays(gl,arrays);
var={};
总账使用程序(programInfo.program);
twgl.setBuffersAndAttributes(总帐、程序信息、缓冲信息);
twgl.设置制服(程序信息、制服);
twgl.drawBufferInfo(总账,bufferInfo)
html,正文{
背景:红色;
}

属性向量4位置;
void main(){
gl_位置=位置;
}
精密中泵浮子;
void main(){
vec4 c0=vec4(0,1,0,1);
c0.a*=步骤(132.0,gl_FragCoord.x);
gl_FragColor=c0;
}

您需要显示更多代码。你启用了混合吗?你选择了什么混合函数和混合方程。你的画布有阿尔法吗?画布的背景是什么颜色或是其他什么颜色

下面是一个使用您的示例的小程序

“严格使用”;
var gl=twgl.getWebGLContext(document.getElementById(“c”));
var programInfo=twgl.createProgramInfo(gl,[“vs”,“fs]”);
变量数组={
位置:[1,-1,0,1,-1,0,-1,1,0,-1,1,0,1,-1,0,1,1,0],
};
var bufferInfo=twgl.createBufferInfoFromArrays(gl,arrays);
var={};
总账使用程序(programInfo.program);
twgl.setBuffersAndAttributes(总帐、程序信息、缓冲信息);
twgl.设置制服(程序信息、制服);
twgl.drawBufferInfo(总账,bufferInfo)
html,正文{
背景:红色;
}

属性向量4位置;
void main(){
gl_位置=位置;
}
精密中泵浮子;
void main(){
vec4 c0=vec4(0,1,0,1);
c0.a*=步骤(132.0,gl_FragCoord.x);
gl_FragColor=c0;
}

这似乎是Chrome浏览器的问题。它在Firefox中看起来不错,如果我在NW.js应用程序中运行它也不错。我可以在Chrome中更改特定的设置来解决这个问题吗?可能不相关,但使用整数定义向量组件在我的机器上无法编译。LJ,使用整数定义向量组件完全是很好的WebGL,并且有一致性测试。如果这在你的机器上不起作用,你应该提交一个bug。这似乎是Chrome浏览器的问题。它在Firefox中看起来不错,如果我在NW.js应用程序中运行它也不错。我可以在Chrome中更改特定的设置来解决这个问题吗?可能不相关,但使用整数定义向量组件在我的机器上无法编译。LJ,使用整数定义向量组件完全是很好的WebGL,并且有一致性测试。如果这在你的机器上不起作用,你应该提交一个bug。谢谢你的解释!这就解决了问题。谢谢你的解释!这就解决了问题。