Название: Как одну текстуру обработать 2 шейдерами? Отправлено: RomanKravchenko от Сентябрь 20, 2012, 15:56 Стоит задача: есть два фрагментных шейдера, которые создают два разных эффекта для текстуры. Как в программе применить эти оба шейдера к одной текстуре?
Название: Re: Как одну текстуру обработать 2 шейдерами? Отправлено: mitrich от Сентябрь 20, 2012, 17:27 Отрисовать сначала с первым шейдером, затем со вторым, включив смешивание.
См. glEnable(GL_BLEND), glBlendFunc (http://www.opengl.org/sdk/docs/man/xhtml/glBlendFunc.xml). Название: Re: Как одну текстуру обработать 2 шейдерами? Отправлено: Igors от Сентябрь 20, 2012, 17:54 Или сделать из двух шейдеров один (сложнее но возможностей больше)
Название: Re: Как одну текстуру обработать 2 шейдерами? Отправлено: RomanKravchenko от Сентябрь 20, 2012, 21:11 Или сделать из двух шейдеров один (сложнее но возможностей больше) Я уже так думал - не вариант. Нужно вторым шейдером проходить по новых значениях пикселей. Как вариант пробую с QGlFramebufferObject: прохожу первым шейдером по начальной текстуре и отрисовую её в буфер, а потом отключаю этот шейдер, включаю второй и прохожу уже по текстуре с буфера и её рисую. Идея хорошая, но почему-то в PaintGl(), когда делаю два раза bind() к шейдерам или release(), появляется баг и ничего не рисуется(черный экран). Название: Re: Как одну текстуру обработать 2 шейдерами? Отправлено: Igors от Сентябрь 21, 2012, 00:26 Я уже так думал - не вариант. Нужно вторым шейдером проходить по новых значениях пикселей. Не знаю, у меня "вариант" (до 8 текстур). Код
Название: Re: Как одну текстуру обработать 2 шейдерами? Отправлено: RomanKravchenko от Сентябрь 21, 2012, 12:41 Да Вы правы, так можно сделать. Я просто ещё не очень хорошо разбираюсь в шейдерах. Но с другой стороны, считаю это не очень хорошим стилем - все забрасывать в один файл.
Название: Re: Как одну текстуру обработать 2 шейдерами? Отправлено: Igors от Сентябрь 21, 2012, 12:47 Но с другой стороны, считаю это не очень хорошим стилем - все забрасывать в один файл. Это и намного труднее. Но с буфером - как Вы узнаете откуда взялся цвет пыкселя, т.е. был ли он действительно создан предыдущей текстурой? Название: Re: Как одну текстуру обработать 2 шейдерами? Отправлено: RomanKravchenko от Сентябрь 21, 2012, 16:43 Но с буфером - как Вы узнаете откуда взялся цвет пыкселя, т.е. был ли он действительно создан предыдущей текстурой? Создаю экземпляр QGlFramebufferObject, в него рисую как в буфер, а потом с него достаю текстуру. А действительно ли - будет видно на экране, я же знаю какой результат мне нужен |