Модераторы: Rickert, Alexeis, BorisVorontsov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Формула для наложения маски текстуры, кто шарит в GL_ARB_texture_env_combine  
:(
    Опции темы
Maksitron
Дата 5.7.2009, 14:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 11
Регистрация: 23.2.2009

Репутация: нет
Всего: -3



Ct1 - 1 текстура 
Ct2 - 2 текстура 
Сt3 - маска для этих двух текстур ( черно белая текстура с градацией серого) 
Нужно чтоб на белых областях маски - отображалась 1 текстура а на черных - 2 текстура. 
Не подскажите формулу?  (используя дополнение  GL_ARB_texture_env_combine)

Вот что мне написали на другом форуме:
> Не подскажите формулу? 
a=Ct1 
b=Ct2 
m=Сt3 
r=a*m+b*(1-m) 
> (используя дополнение GL_ARB_texture_env_combine) 
INTERPOLATE_ARB.

В итоге я написал вот этот код. Но у меня почему то выводится не то что хотелось бы (см выше). - не подскажите в чем тут ошибка?

Код
  
   LoadTexture ('Grass_001_512.tga',    Tex_1, FALSE);
    LoadTexture ('Ground_001_512.tga', Tex_2, FALSE);
    LoadTexture ('Earth_mult.tga',           Tex_3, FALSE);

  glPushMatrix;

                        // для Arg0
    glActiveTextureARB ( GL_TEXTURE0_ARB );
    glEnable           ( GL_TEXTURE_2D );
    glBindTexture      ( GL_TEXTURE_2D, Tex_1 );
    glTexEnvi          ( GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE );

                        // для Arg1
    glActiveTextureARB ( GL_TEXTURE1_ARB );
    glEnable           ( GL_TEXTURE_2D );
    glBindTexture      ( GL_TEXTURE_2D, Tex_2 );

                        // для Arg2
    glActiveTextureARB ( GL_TEXTURE2_ARB );
    glEnable           ( GL_TEXTURE_2D );
    glBindTexture      ( GL_TEXTURE_2D, Tex_3 );

                        // ставим combine mode
    glTexEnvi          ( GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE,  GL_COMBINE_ARB );
    glTexEnvi          ( GL_TEXTURE_ENV, GL_COMBINE_RGB_ARB,   GL_INTERPOLATE_ARB );

                      // ставим Arg0
    glTexEnvi ( GL_TEXTURE_ENV, GL_SOURCE0_RGB_ARB,    GL_PREVIOUS_ARB );
    glTexEnvi ( GL_TEXTURE_ENV, GL_OPERAND0_RGB_ARB,   GL_SRC_COLOR    );

                      // ставим Arg1
    glTexEnvi ( GL_TEXTURE_ENV, GL_SOURCE1_RGB_ARB,    GL_TEXTURE   );
    glTexEnvi ( GL_TEXTURE_ENV, GL_OPERAND1_RGB_ARB,   GL_SRC_COLOR );

                      // ставим Arg2 (маска)
    glTexEnvi ( GL_TEXTURE_ENV, GL_SOURCE2_RGB_ARB,    GL_TEXTURE );
    glTexEnvi ( GL_TEXTURE_ENV, GL_OPERAND2_RGB_ARB,   GL_SRC_COLOR    );

  glBegin(GL_QUADS);
    glVertex3f(-5, -5, -0.5);
    glTexCoord2f(0,0);
    glVertex3f(-5,  5, -0.5);
    glTexCoord2f(1,0);
    glVertex3f( 5,  5, -0.5);
    glTexCoord2f(1,1);
    glVertex3f( 5, -5, -0.5);
    glTexCoord2f(0,1);
  glEnd;
  glDisable           ( GL_TEXTURE_2D );
  glPopMatrix;


Это сообщение отредактировал(а) Maksitron - 5.7.2009, 14:07
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Вы можете найти полезным что...
Alexeis
Rickert
  • Английская документация по DirectX лежит где-то здесь.
  • Английская документация по OpenGL лежит где-то там.
  • Гейм-дев у нас обсуждают где-то тут

Ждём вас! С уважением, Alexeis, Rickert.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Мультимедия, OpenGL/DirectX | Следующая тема »


 




[ Время генерации скрипта: 0.0641 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.