OpenGLES 2.0 фрагмент шейдера альфа не работает? - PullRequest
3 голосов
/ 24 июля 2011

Я ожидаю, что моя текстура полностью исчезнет с помощью следующего фрагментного шейдера:

varying mediump vec2 text_coord_out;
uniform sampler2D sampler;

void main()
{
    gl_FragColor = texture2D(sampler, text_coord_out);
    gl_FragColor.w *= 0.0;
}

.,Это не так.Я также попробовал gl_FragColor.a.Мысли? * * 1004

Ответы [ 4 ]

9 голосов
/ 25 июля 2011

OMG ... Я полностью исправил это. Фрагмент шейдера выглядит так:

varying mediump float text_alpha_out;
varying mediump vec2 text_coord_out;
uniform sampler2D sampler;

void main()
{
    gl_FragColor = texture2D(sampler, text_coord_out);
    gl_FragColor = gl_FragColor * text_alpha_out;
}

и мое смешивание выглядит так:

glEnable(GL_BLEND);
glBlendFunc(GL_ONE, GL_ONE_MINUS_SRC_ALPHA);
7 голосов
/ 03 августа 2012

Использовать gl_fragColor = только один раз

  1. выполнять все операции с различными переменными, как и другие vec4, в этом случае
  2. , вы можете использовать это как вывод, например:

vec4 red = vec4( 1,0,0,1 );
gl_fragColor = red;
5 голосов
/ 24 июля 2011

Почему он должен исчезнуть?Альфа-значение выходного цвета не имеет смысла, если вы не укажете ему значение.Как правило, это означает использование некоторой формы blending .Обратите внимание, что ссылка описывает рабочий стол OpenGL;GL GL эквивалент работает почти так же, но настольный GL может иметь больше возможностей, чем ES.

0 голосов
/ 03 июля 2018
gl_FragColor.w = 0;

должно работать.Возможно * = операция ставит в тупик компилятор GLSL.

...