我在浏览器中有一个 3D 球,现在我想在它上面挖一个洞来看看它的背面。
我怎样才能使它成为可能?
例如,我希望立方体的白色三角形部分可以是透明的(我的意思是我们可以看到立方体后面的背景)。
我试图改变片段着色器中的阿尔法(代码中的区域是正方形而不是三角形,没关系):
<script id="shader-fs-alpha" type="x-shader/x-fragment">
precision mediump float;
varying vec4 vColor;
uniform float uAlpha;
void main(void) {
if( gl_FragCoord.x < 350.0 && gl_FragCoord.x > 300.0
&& gl_FragCoord.y < 300.0 && gl_FragCoord.y > 230.0
) {
gl_FragColor = vec4(0, 0 ,0, 0.0);
} else {
gl_FragColor = vec4(vColor.rgb, 1.0);
}
}
</script>
这实际上有效,但该区域变成白色(不透明),所以我尝试启用混合,但这会使整个立方体透明。
所以现在我想如果有办法bleanding
在片段着色器中启用,我可以在else
块中禁用它。
这是我的整个项目https://gist.github.com/royguo/5873503:
- index.html :这里的着色器脚本。
- buffers.js :这里的所有对象。
- shaders.js:初始化着色器。