Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2008.09.14;
Скачать: CL | DM;

Вниз

блендинг текстур по маске   Найти похожие ветки 

 
Trimp ©   (2006-07-25 18:21) [40]

В чём ошибка то была?


 
korvin88   (2006-07-25 19:02) [41]

Trimp
Чья? Моя? В ДНК, надо полагать, раз так долго все это рожал :))). Но и ты тоже немного ошибся в последнем примере. Перепутал параметры - они должны относиться к маске, т.е. к первой текстуре, а не нулевой :). Это меня долго смущало. Плюс ко всему я никак не мог допереть, что маску легче сделать с альфой (возможно даже, без альфы - никак). Ну и баги по мелочи. Ну сейчас хоть работает :)). Если интересно, то вот правильная процедура (пока не оптимизировал - наверняка это все можно свести к более простой форме).


Procedure DrawMaskedPolygon(PMask,PTex1,PTex2 : GLUint; x1,y1,z1,x2,y2,z2,x3,y3,z3,x4,y4,z4 : GLfloat);
begin
 glPushAttrib(GL_ALL_ATTRIB_BITS);
   glActiveTextureARB(GL_TEXTURE0_ARB    );
   glEnable          (GL_TEXTURE_2D      );
   glBindTexture     (GL_TEXTURE_2D,PTex2);
   glTexEnvi         (GL_TEXTURE_ENV,GL_TEXTURE_ENV_MODE ,GL_COMBINE_ARB    );
   glTexEnvi         (GL_TEXTURE_ENV,GL_COMBINE_RGB_ARB  ,GL_REPLACE        );
   glTexEnvi         (GL_TEXTURE_ENV,GL_COMBINE_ALPHA_ARB,GL_REPLACE        );

   glActiveTextureARB(GL_TEXTURE1_ARB    );
   glEnable          (GL_TEXTURE_2D      );
   glBindTexture     (GL_TEXTURE_2D, PMask);
   glTexEnvi         (GL_TEXTURE_ENV,GL_TEXTURE_ENV_MODE ,GL_COMBINE_ARB    );
   glTexEnvi         (GL_TEXTURE_ENV,GL_COMBINE_RGB_ARB  ,GL_INTERPOLATE_ARB);
   glTexEnvi         (GL_TEXTURE_ENV,GL_COMBINE_ALPHA_ARB,GL_REPLACE        );

   glActiveTextureARB(GL_TEXTURE2_ARB    );
   glEnable          (GL_TEXTURE_2D      );
   glBindTexture     (GL_TEXTURE_2D,PTex1);
   glTexEnvi         (GL_TEXTURE_ENV,GL_TEXTURE_ENV_MODE ,GL_COMBINE_ARB    );
   glTexEnvi         (GL_TEXTURE_ENV,GL_COMBINE_RGB_ARB  ,GL_INTERPOLATE_ARB);
   glTexEnvi         (GL_TEXTURE_ENV,GL_COMBINE_ALPHA_ARB,GL_REPLACE        );

   glTexEnvi (GL_TEXTURE_ENV,GL_SOURCE0_RGB_ARB   ,GL_PREVIOUS_ARB);
   glTexEnvi (GL_TEXTURE_ENV,GL_OPERAND0_RGB_ARB  ,GL_SRC_COLOR   );

   glTexEnvi (GL_TEXTURE_ENV,GL_SOURCE1_RGB_ARB   ,GL_TEXTURE     );
   glTexEnvi (GL_TEXTURE_ENV,GL_OPERAND1_RGB_ARB  ,GL_SRC_COLOR   );
   glTexEnvi (GL_TEXTURE_ENV,GL_SOURCE1_ALPHA_ARB ,GL_TEXTURE     );
   glTexEnvi (GL_TEXTURE_ENV,GL_OPERAND1_ALPHA_ARB,GL_SRC_ALPHA   );

   glTexEnvi (GL_TEXTURE_ENV,GL_SOURCE2_RGB_ARB   ,GL_PREVIOUS_ARB);
   glTexEnvi (GL_TEXTURE_ENV,GL_OPERAND2_RGB_ARB  ,GL_SRC_ALPHA   );

   glBegin(GL_TRIANGLE_STRIP);
     glNormal3f          (0,1,0   );
     glMultiTexCoord2fARB(GL_TEXTURE0_ARB,co,cz);
     glMultiTexCoord2fARB(GL_TEXTURE1_ARB,co,cz);
     glMultiTexCoord2fARB(GL_TEXTURE2_ARB,co,cz);
     glVertex3f          (x1,y1,z1);

     glNormal3f          (0,1,0   );
     glMultiTexCoord2fARB(GL_TEXTURE0_ARB,cz,cz);
     glMultiTexCoord2fARB(GL_TEXTURE1_ARB,cz,cz);
     glMultiTexCoord2fARB(GL_TEXTURE2_ARB,cz,cz);
     glVertex3f          (x2,y2,z2);

     glNormal3f          (0,1,0   );
     glMultiTexCoord2fARB(GL_TEXTURE0_ARB,co,co);
     glMultiTexCoord2fARB(GL_TEXTURE1_ARB,co,co);
     glMultiTexCoord2fARB(GL_TEXTURE2_ARB,co,co);
     glVertex3f          (x3,y3,z3);

     glNormal3f          (0,1,0   );
     glMultiTexCoord2fARB(GL_TEXTURE0_ARB,cz,co);
     glMultiTexCoord2fARB(GL_TEXTURE1_ARB,cz,co);
     glMultiTexCoord2fARB(GL_TEXTURE2_ARB,cz,co);
     glVertex3f          (x4,y4,z4);
   glEnd ;
 glPopAttrib ;
end ;


Еще раз, спасибо! :))


 
Trimp ©   (2006-07-25 19:16) [42]

Всё понял.  


> что маску легче сделать с альфой

Про это забыл написать.

Удачи! :))


 
имя   (2007-03-14 08:11) [43]

Удалено модератором


 
имя   (2007-03-21 20:25) [44]

Удалено модератором



Страницы: 1 2 вся ветка

Текущий архив: 2008.09.14;
Скачать: CL | DM;

Наверх




Память: 0.54 MB
Время: 0.02 c
11-1193050704
DevilDevil
2007-10-22 14:58
2008.09.14
механизм MCK. как реализовать?


6-1193124658
Alex_C
2007-10-23 11:30
2008.09.14
Загрузить фаил на сервер


8-1185571678
megajober3d
2007-07-28 01:27
2008.09.14
Как в Delphi получить из BMP файл GIF но "прозрачный"...


11-1192217573
Vladimir Kladov
2007-10-12 23:32
2008.09.14
Версия 2.83


2-1217424279
@!!ex
2008-07-30 17:24
2008.09.14
Рабочая папка процесса.