Суббота, 04 Мая 2024, 15:13

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 1
  • 1
Форум игроделов » Программирование » Общие обсуждения программистов » Помогите разобраться с FBO на примере openGL (Frame Buffer Object)
Помогите разобраться с FBO на примере openGL
MDKedДата: Среда, 03 Апреля 2013, 00:33 | Сообщение # 1
частый гость
Сейчас нет на сайте
Создаю я фбо, рисую в нём то что мне надо, вывожу на основной экран - там получается моё изображение с чёрным фоном(который перекрывает то что у меня было нарисовано до этого), так у меня вопрос как этот чёрный фон сделать прозрачным, накладывать альфа-маску или же есть более простой метод? помогите пожалуйста, а то сколько гуглю не могу найти решение:(

Добавлено (03.04.2013, 00:33)
---------------------------------------------
Разобрался сам, проблема была в шейдере, который я, не вникая, списал, там у меня в поле альфа стояла единица, поэтому отрисовывалось с фоном. Собственно мой вопрос исчерпан, если по теме больше нечего спросить, то можно закрывать.

было

Код
uniform sampler2D u_texture;
uniform float resolution;
uniform float radius;
uniform vec2 dir;

void main(){
  vec4 sum = vec4(0.0);
  vec2 tc = gl_TexCoord[0];

  float blur = radius/resolution;

  float hstep = dir.x;
  float vstep = dir.y;

  sum += texture2D(u_texture, vec2(tc.x - 4.0*blur*hstep, tc.y - 4.0*blur*vstep)) * 0.0162162162;
  sum += texture2D(u_texture, vec2(tc.x - 3.0*blur*hstep, tc.y - 3.0*blur*vstep)) * 0.0540540541;
  sum += texture2D(u_texture, vec2(tc.x - 2.0*blur*hstep, tc.y - 2.0*blur*vstep)) * 0.1216216216;
  sum += texture2D(u_texture, vec2(tc.x - 1.0*blur*hstep, tc.y - 1.0*blur*vstep)) * 0.1945945946;

  sum += texture2D(u_texture, vec2(tc.x, tc.y)) * 0.2270270270;

  sum += texture2D(u_texture, vec2(tc.x - 1.0*blur*hstep, tc.y - 1.0*blur*vstep)) * 0.1945945946;
  sum += texture2D(u_texture, vec2(tc.x - 2.0*blur*hstep, tc.y - 2.0*blur*vstep)) * 0.1216216216;
  sum += texture2D(u_texture, vec2(tc.x - 3.0*blur*hstep, tc.y - 3.0*blur*vstep)) * 0.0540540541;
  sum += texture2D(u_texture, vec2(tc.x - 4.0*blur*hstep, tc.y - 4.0*blur*vstep)) * 0.0162162162;
   
         gl_FragColor = vColor * vec4(sum.rgb, 1.0);
}

стало
Код
uniform sampler2D u_texture;
uniform float resolution;
uniform float radius;
uniform vec2 dir;

void main(){
  vec4 sum = vec4(0.0);
  vec2 tc = gl_TexCoord[0];

  float blur = radius/resolution;

  float hstep = dir.x;
  float vstep = dir.y;

  sum += texture2D(u_texture, vec2(tc.x - 4.0*blur*hstep, tc.y - 4.0*blur*vstep)) * 0.0162162162;
  sum += texture2D(u_texture, vec2(tc.x - 3.0*blur*hstep, tc.y - 3.0*blur*vstep)) * 0.0540540541;
  sum += texture2D(u_texture, vec2(tc.x - 2.0*blur*hstep, tc.y - 2.0*blur*vstep)) * 0.1216216216;
  sum += texture2D(u_texture, vec2(tc.x - 1.0*blur*hstep, tc.y - 1.0*blur*vstep)) * 0.1945945946;

  sum += texture2D(u_texture, vec2(tc.x, tc.y)) * 0.2270270270;

  sum += texture2D(u_texture, vec2(tc.x - 1.0*blur*hstep, tc.y - 1.0*blur*vstep)) * 0.1945945946;
  sum += texture2D(u_texture, vec2(tc.x - 2.0*blur*hstep, tc.y - 2.0*blur*vstep)) * 0.1216216216;
  sum += texture2D(u_texture, vec2(tc.x - 3.0*blur*hstep, tc.y - 3.0*blur*vstep)) * 0.0540540541;
  sum += texture2D(u_texture, vec2(tc.x - 4.0*blur*hstep, tc.y - 4.0*blur*vstep)) * 0.0162162162;
     
   gl_FragColor = gl_Color * sum;
}


Стою на асфальте я в лыжи обутый.
То ли лыжи не едут, то ли я баганутый.
"O-Wars"
Форум игроделов » Программирование » Общие обсуждения программистов » Помогите разобраться с FBO на примере openGL (Frame Buffer Object)
  • Страница 1 из 1
  • 1
Поиск:

Все права сохранены. GcUp.ru © 2008-2024 Рейтинг