У меня два вопроса:
1) Есть класс производный от CCNode. Допустим testClass. Я добавляю к нему множество детей в ролях спрайтов, слоёв и.т.п. Как мне внутри этого класса сделать так чтобы ко всем его детям был применен определенный фрагментный шейдер?
2) Как внутри этого класса в методе draw получить рисунок всех его детей и вывести в качестве текстуры? Я делаю примерно так:
-(CCSprite*) screenshotFromNode
{
ССRenderTexture *rt = [CCRenderTexture ................];
[rt begin];
[self my_visit];
[rt end];
return [CCSprite spriteWithTexture:rt.sprite.texture];
}
-(void) draw
{
CCSprite *sp = [self screenshotFromNode];
[shaderProgram_ use];
........
glActive(...
glBidTexture(GL_TEXTURE_2D, [sp.texture name]);
glDrawArays(....
}
Метод
my_visit в функции
screenshotFromNode это тотже visit ССNode но только без вызовов draw, т.е он просто вызывает visit всех детей.
Вроде все логично и должно работать, в
sp должна быть текстура моего self класса со всеми его детьми и потом я к этой текстуре просто применяю шейдер и вывожу. Но программа просто ничего не выводит.