Полупрозрачный спрайт в opengl es 2.0 с использованием шейдера

Я пытаюсь создать шейдер, который делает то же самое, что и glcolor4f, а затем его альфа-часть. В opengl es 1.1, если вы установите альфу, скажем, 0,5, спрайт будет полупрозрачным.

Теперь я не могу получить эффект с помощью шейдера, вот как теперь выглядит мой шейдер:

gl_FragColor = texture2d(texture, coord) * blend;

И используя этот режим наложения:

glEnable(GL_BLEND);
glBlendFunc(GL_ONE, GL_ONE_MINUS_SRC_ALPHA);

Но это не работает, он меняет цвет спрайта, но не прозрачность. Что мне не хватает?

Спасибо за ваше время, Ричард.


person Richard    schedule 18.01.2011    source источник


Ответы (1)


Кажется, что вы масштабируете цвет, полученный из текстуры, с помощью коэффициента смешивания, а не так, как выполняется альфа (это просто сделало бы его темнее).

Я считаю, что вам нужно что-то вроде следующего

gl_FragColor = vec4(texture2d(texture, coord).rgb, blend);

Посмотрите, работает ли это

person vmpstr    schedule 19.01.2011