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

Ваш аккаунт

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

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

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

Альфаканал и прозрачность

1.9K
18 июля 2007 года
0xf001
96 / / 24.05.2005
Помогите пожалуйста настроить glBlendFunc().
У меня текстура с альфа-каналом, в котором содержится типа "карта прозрачности". Накладывая её на полигон хочу получить плавное изменение его прозрачности.
Какие только комбинации я не использовал - ни одной не подошло. Может я не все перепробовал, может чего-то дополнительно не включил, не знаю.
8.9K
18 июля 2007 года
Kap
77 / / 10.09.2006
В чем проблема то? Ты вообще уверен, что ты загрузил альфа- канал? Какими средствами ты загружал?
1.9K
19 июля 2007 года
0xf001
96 / / 24.05.2005
Я гружу сначало обычную картинку с тремя каналами, а потом БМП-ху соханенную в grayscare. Потом переписываю пиксели в новый массив: три раза по картинке, 1 раз по grayscar-у. и потом все это пихается в:
Код:
GLenum TextureFormat; // с альфой или без
    unsigned long numpix = TextureImg.sizeX * TextureImg.sizeY; //кол-во пикселей в 1 слое
    unsigned long rgbcntr=0, acntr=0, ncntr=0;
    unsigned char *NewTexData=new unsigned char[numpix*4];
    for(unsigned long i=0; i<numpix; i++)//пихать маску в альфаканал
    {
        NewTexData[ncntr++]=TextureImg.data[rgbcntr++];// rgbcntr++; //три раза по цвету...
        NewTexData[ncntr++]=TextureImg.data[rgbcntr++];// rgbcntr++;
        NewTexData[ncntr++]=TextureImg.data[rgbcntr++];// rgbcntr++;
   
        NewTexData[ncntr++]=MaskImg.data[acntr++];// acntr++;     //один раз по альфе

    delete TextureImg.data;
    TextureImg.data=NewTexData;
    Data.UseAlpha=true;

        glGenTextures(1, &Data.TextureID);
        glBindTexture(GL_TEXTURE_2D, Data.TextureID);
       
        if(ApplyAniso) glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAX_ANISOTROPY_EXT, MaxAniso);
        glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_LINEAR_MIPMAP_LINEAR);
        glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_LINEAR);
        glTexImage2D(GL_TEXTURE_2D, 0, GL_COMPRESSED_RGBA, TextureImg.sizeX, TextureImg.sizeY, 0, GL_RGBA, GL_UNSIGNED_BYTE, TextureImg.data);
        gluBuild2DMipmaps(GL_TEXTURE_2D, GL_COMPRESSED_RGBA, TextureImg.sizeX, TextureImg.sizeY, GL_RGBA, GL_UNSIGNED_BYTE, TextureImg.data);
1.9K
19 июля 2007 года
0xf001
96 / / 24.05.2005
Похоже где-то неправильно грузится текстура, потому что сам файл текстуры я заменял на логотип из 22 статьи nehe, и настройки funcBlend у меня такие же...
Сейчас оснофные симптомы - неправильное распределение и величина прозрачности (такое ощущение, что альфаканал нафиг порубали топором) и иногда на некоторых текстурах без включеного режима блендинга появляются мелкие артефакты.
1.9K
19 июля 2007 года
0xf001
96 / / 24.05.2005
Короче все разрешилось. Это компилятор материала неправильно писал альфу. Я то думал, что монохромную картинку он откроет прочитает в 1 канал, ан нет, зобацал копии на все три канала (я абсолютно уверен что в этих бмп-хах был только 1 канал).
Пришлось пИсать через один пиксель.
Всем спасибо за внимание, пока.
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог