Смешивание при мультитекстурировании
Fido Themes (ru.opengl)
От: Euclid Nikiforov <euclid@dicomp.ru>
Тема: Смешивание при мульти текстурировании
Дата: 13 марта 2001 г. 15:40
Привет.
Есть необходимость смешивать две тектуры по формуле T0 * A + T1 * (1 - A) с
переменным коэф A Как это сделать при мультитекстурировании? Может через GL_EXT_texure_env_combine?
ПС: Вообще хорошо бы поиметь примеры\доки работы с последним
С уважением
Никифоров Евклид

От: Alexey Yakovenko <waker@mdart.com>
Тема: Re: Смешивание при мульти текстурировании
Дата: 13 марта 2001 г. 17:34
"Euclid Nikiforov" <euclid@dicomp.ru> wrote
in message
news:98l4ct$13jm$1@gavrilo.mtu.ru...
> Привет.
> Есть необходимость смешивать две тектуры по формуле
> T0 * A + T1 * (1 - A) с переменным коэф A
> Как это сделать при мульти текстурировании?
> Может через GL_EXT_texure_env_combine?
вот за это я не люблю gl. в dx это делается через blendcurrentalpha:
stage0:
colorarg1 texture
colorop selectarg1
stage1:
colorarg1 current
colorarg2 texture
colorop blendcurrentalpha
а в gl, наверное, только через combine... можно поюзать INTERPOLATE_EXT, более
подробно подсказать не могу, т.к. сам не юзал, только в доке (nvOpenGLspecs.pdf)
формулу глянул:
INTERPOLATE_EXT Arg0 * (Arg2) + Arg1 * (1-Arg2)
> ПС: Вообще хорошо бы поиметь примеры\доки работы с последним
www.nvidia.com

От: Alexey Skoufyin <skuf@cps.tver.ru>
Тема: На: Смешивание при мульти текстурировании
Дата: 14 марта 2001 г. 10:36
Привет, Euclid Nikiforov!
EN> Есть необходимость смешивать две тектуры по формуле
EN> T0 * A + T1 * (1 - A) с переменным коэф A
EN> Как это сделать при мульти текстурировании?
EN> Может через GL_EXT_texure_env_combine?
Вот тебе кусочек кода, правда по памяти:
--- begin code ---
glTexEnvi(GL_TEXTURE_ENV,GL_TEXTURE_ENV_MODE,GL_COMBINE_EXT);
glTexEnvi(GL_TEXTURE_ENV,GL_COMBINE_RGB_EXT,GL_INTERPOLATE_EXT);
glTexEnvi(GL_TEXTURE_ENV,GL_COMBINE_ALPHA_EXT,GL_REPLACE_EXT);
glTexEnvi(GL_TEXTURE_ENV,GL_SOURCE0_RGB_EXT,GL_TEXTURE0_ARB);
glTexEnvi(GL_TEXTURE_ENV,GL_OPERAND0_EXT,GL_SRC_COLOR);
glTexEnvi(GL_TEXTURE_ENV,GL_SOURCE0_ALPHA_EXT,GL_PREVIOUS_EXT); // или
GL_PRIMARY_COLOR_EXT
glTexEnvi(GL_TEXTURE_ENV,GL_SOURCE1_RGB_EXT,GL_TEXTURE1_ARB);
glTexEnvi(GL_TEXTURE_ENV,GL_OPERAND1_EXT,GL_SRC_COLOR);
glTexEnvi(GL_TEXTURE_ENV,GL_SOURCE2_RGB_EXT,GL_TEXTURE0_ARB);
glTexEnvi(GL_TEXTURE_ENV,GL_OPERAND2_EXT,GL_SRC_ALPHA);
--- end code ---
Всё, должно работать.
Вроде бы так, не проверял, не компилировал, так что ошибки сами исправляйте
;))
|