У меня есть 3D-шар в браузере, теперь я хочу выкопать отверстие на нем, чтобы увидеть его обратно.WebGL: Как сделать часть объекта прозрачной?
Как я могу сделать это возможным?
Например, я хочу, чтобы часть белого кубика была прозрачной (я имею в виду, что мы могли видеть фон за кубом).
Я попытался изменить альфа в пиксельный шейдер (область в коде есть квадрат не треугольник, не имеет значения):
<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: Shader скрипт здесь.
- buffers.js: Все объекты здесь.
- shaders.js: Init шейдеры.
Не могли бы вы предоставить более подробную информацию? Мне очень нужна ваша помощь, спасибо! – MrROY
отредактировал ответ немного. –