Смешивание двух FBO на iPhone дает странный результат?

Я программирую небольшое приложение для рисования на iphone и столкнулся с проблемой. Когда я объединяю два fbos, цвет становится белым вместо слияния. Посмотрите на картинку:

http://dl.dropbox.com/u/2025544/help.png

Здесь левая часть отображается как обычная программа для Mac, а правая часть отображается на платформе iPhone с почти таким же кодом, за исключением использования версии fbo для eos.

Нанесение нескольких FBO друг на друга создает альфа-смешение, которое я хочу:

  glEnable(GL_BLEND);
  glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
  myTex.draw(0, 0);


     for(int client = 0; client < 5;client++)
     {
        ofSetColor(
                 datas[client]->myColor.r,
                 datas[client]->myColor.g,
                 datas[client]->myColor.b,
                 datas[client]->myColor.a
                 );   


        datas[client]->myTex.draw(0,0);

     }

Слияние двух fbos дает med неправильную альфу:

   myTex.begin();
        glEnable(GL_BLEND);
        glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);


        ofSetColor(
                 datas[tmpMessage->clientId]->myColor.r,
                 datas[tmpMessage->clientId]->myColor.g,
                 datas[tmpMessage->clientId]->myColor.b,
                 datas[tmpMessage->clientId]->myColor.a
                 );
        datas[tmpMessage->clientId]->myTex.draw(0, 0);

        myTex.end();
        datas[tmpMessage->clientId]->myTex.clear(0, 0, 0, 0);

        datas[tmpMessage->clientId]->touchDown = true;

Помогите, я схожу с ума :-)


person peterhansen    schedule 11.01.2010    source источник
comment
Я решил проблему, не используя: glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); Я понятия не имею, почему это решило эту проблему... и кажется, что другие звонки тоже облажались...   -  person peterhansen    schedule 13.01.2010


Ответы (2)


Вы проверили, какое значение имеет glBlendEquation()?

person Andy J Buchanan    schedule 11.01.2010
comment
просматривая Интернет, кажется, что glBlendEquation не является частью библиотеки iphone? - person peterhansen; 13.01.2010
comment
У меня никогда не было причин менять его по умолчанию в любой реализации opengl. Он указан в справочнике Khronos openGL ES 2.0, хотя похоже, что реализация Apple на самом деле называется glBlendEquationOES(), что, я думаю, означает, что она доступна как расширение для 1.1. Не знаю, почему имя без украшений недоступно. - person Andy J Buchanan; 14.01.2010

Я решил проблему, не используя: glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); Я понятия не имею, почему это решило это... и кажется, что другие вызовы тоже портят ситуацию...

person peterhansen    schedule 13.01.2010