[iOS+cocos2d] Как применить шейдер к классу CCNode и всем его детям?
От: BuGGy  
Дата: 01.06.12 04:45
Оценка:
У меня два вопроса:
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 класса со всеми его детьми и потом я к этой текстуре просто применяю шейдер и вывожу. Но программа просто ничего не выводит.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.