Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

OPENGL наложение Visual C++

16K
25 июня 2006 года
swilong
7 / / 10.06.2006
Помогите плиз. Пытаюсь учится.

Есть трава. На неё пытаюсь покласть камень (спрайт)- но он не смешивается стравой (вокруг камня белый квадрат).


Код прилагается
279
30 июня 2006 года
bave
456 / / 07.03.2004
Исходник смотреть влом...
---------------------------------------
Для начала просто скажи ты камень с помошью мультитекстурирования положиь пытаешься?
Если да, то уравнение прохода нужно задать так:
glActiveTextureARB(GL_TEXTURE0_ARB); //Первый блок текстурирования
glEnable(GL_TEXTURE_2D);
glBindTexture(GL_TEXTURE_2D, imgID1);
glTexEnvf(GL_TEXTURE_ENV, GL_COMBINE_RGB_EXT, GL_REPLACE);

glActiveTextureARB(GL_TEXTURE1_ARB); //Второй...
glEnable(GL_TEXTURE_2D);
glBindTexture(GL_TEXTURE_2D, imgID2);
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_SOURCE0_RGB_EXT, GL_TEXTURE);
glTexEnvi(GL_TEXTURE_ENV, GL_OPERAND0_RGB_EXT, GL_SRC_COLOR);
glTexEnvi(GL_TEXTURE_ENV, GL_SOURCE1_RGB_EXT, GL_PREVIOUS_EXT);
glTexEnvi(GL_TEXTURE_ENV, GL_OPERAND1_RGB_EXT, GL_SRC_COLOR);
glTexEnvi(GL_TEXTURE_ENV, GL_SOURCE2_RGB_EXT, GL_TEXTURE);
glTexEnvi(GL_TEXTURE_ENV, GL_OPERAND2_RGB_EXT, GL_SRC_ALPHA);

//К текстуре камня (и вообще к текстурам которые будут использоваться во втором текстурном блоке) присобач маску в альфа канал - где видимая часть 255, а та которая отбрасывается 0.

http://www.bave.izhevsk.net/index.files/grassandstone.jpg - вот например картинка,
таким способом получена... - там видно первый(трава) и второй блок (камни) и оба вместе наложенные интерполяцией двух блоков
(GL_INTERPOLATE_EXT)
16K
06 июля 2006 года
swilong
7 / / 10.06.2006
Вот я и непонимаю как это сделать

"//К текстуре камня (и вообще к текстурам которые будут использоваться во втором текстурном блоке) присобач маску в альфа канал - где видимая часть 255, а та которая отбрасывается 0.
"
279
15 июля 2006 года
bave
456 / / 07.03.2004
Ну, например, можешь сделать это фотошопом или еще каким-
нибудь редактором.
-------------------------------------------------------------
Я фотошопом пользоваться не умею, поэтому делаю так:
1. Указатель на растр, к которой цепляется маска
2. Указатель на растр самой маски
3. Произведение ширны на высоту растра (по идее, маска и растр
одного разрешения, но если в твоем случае это не так то переделать
не проблема)
----------------------------------------------------------------
void joinmask(void *pbitmap, void *pmask, unsigned int count)
{
__asm
{
mov ebx, pbitmap
mov edx, pmask
mov ecx, count
label1:
mov al,00h
mov edi,00000000h
push ecx
mov ecx,00000003h
label2:
cmp BYTE ptr [edx+edi],00h
je zero_byte
add al,1
zero_byte:
inc edi
dec ecx
jnz label2

cmp al,00h
je mask_byte
mov BYTE ptr [ebx+3],00FFh
jmp next
mask_byte:
mov BYTE ptr [ebx+3],00h
next:
pop ecx
add ebx,4
add edx,4
dec ecx
jnz label1
}
}
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог