С Новым годом! Форум программистов, компьютерный форум, киберфорум
OpenGL
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.88/8: Рейтинг темы: голосов - 8, средняя оценка - 4.88
Software Developer
 Аватар для fastb1t
315 / 229 / 113
Регистрация: 03.05.2017
Сообщений: 1,336

Изменить значения альфа канала уже созданной текстуры

28.02.2020, 16:38. Показов 1747. Ответов 10
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Привет всем.
Возможно ли как-то изменить значения альфа канала всех пикселей уже созданной текстуры?
У меня в программе уже загружен 32-битный битмап.
При загрузке указал своё значение для альфа канала каждого пикселя.
Теперь понадобилось сделать медленное (в пределах двух секунд) затухание текстуры.
Попытался каждые 10 мс пересоздать текстуру изменяя альфа каналы, но программа подвисает, и это понятно почему.
Короче даже не знаю в какую сторону копать.
Надеюсь на полезные советы.
Заранее благодарен.
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
28.02.2020, 16:38
Ответы с готовыми решениями:

Изменить версию .NET Framework в уже созданной программе
Подскажите можно ли изменить версию NET Framework уже в созданной программе, чтоб не пересоздавать её заново ? Все настройки облазил не...

полупрозрачный куб (альфа канала в вершинах)
Здравствуйте! Хотел создать куб на плоскости, при этом чтобы куб был полупрозрачным. Куб с плоскостью делал на основе урока книжки...

Иконки разделов без альфа канала
и так собственно сабж, 2gif изображения без альфа канала http://cyberstatic.net/images/statusicon/subforum_new.gif ...

10
 Аватар для zayats80888
6352 / 3523 / 1428
Регистрация: 07.02.2019
Сообщений: 8,995
28.02.2020, 16:55
Цитата Сообщение от fastb1t Посмотреть сообщение
Теперь понадобилось сделать медленное (в пределах двух секунд) затухание текстуры.
Текстуру в шейдере сэмплируешь?
0
Software Developer
 Аватар для fastb1t
315 / 229 / 113
Регистрация: 03.05.2017
Сообщений: 1,336
28.02.2020, 16:58  [ТС]
Цитата Сообщение от zayats80888 Посмотреть сообщение
Текстуру в шейдере сэмплируешь?
Нет.
С шейдерами пока что не умею работать.
0
 Аватар для snake32
3504 / 1687 / 236
Регистрация: 26.02.2009
Сообщений: 8,404
Записей в блоге: 6
28.02.2020, 16:58
Если в старом GL то можно натянуть текстуру на белый квадрат в режиме GL_MODULATE и изменять цвет 4 вершин квадрата.
В новом GL передать цвет пиксельному шейдеру
0
Software Developer
 Аватар для fastb1t
315 / 229 / 113
Регистрация: 03.05.2017
Сообщений: 1,336
28.02.2020, 16:59  [ТС]
Цитата Сообщение от snake32 Посмотреть сообщение
Если в старом GL то можно натянуть текстуру на белый квадрат в режиме GL_MODULATE и изменять цвет 4 вершин квадрата.
Можете помочь с этим, а то у меня опыта маловато по работе с OpenGL.
0
 Аватар для snake32
3504 / 1687 / 236
Регистрация: 26.02.2009
Сообщений: 8,404
Записей в блоге: 6
28.02.2020, 17:29
fastb1t, а как вы сейчас выводите текстуру? Код можно?
0
Software Developer
 Аватар для fastb1t
315 / 229 / 113
Регистрация: 03.05.2017
Сообщений: 1,336
28.02.2020, 17:31  [ТС]
Цитата Сообщение от snake32 Посмотреть сообщение
fastb1t, а как вы сейчас выводите текстуру? Код можно?
Вот так сейчас текстура рисуется.
Ещё включено GL_DEPTH_TEST, если это важно.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
// [DrawTexture]:
static void DrawTexture(GLint x, GLint y, GLsizei width, GLsizei height, const CTexture* pTexture, float fTranslateZ)
{
    if (!pTexture->HasImage())
    {
        return;
    }
 
    glEnable(GL_TEXTURE_2D);
 
    if (pTexture->HasTransparentColors())
    {
        glEnable(GL_BLEND);
        glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
    }
 
    glViewport(x, y, width, height);
 
    glMatrixMode(GL_MODELVIEW);
    glLoadIdentity();
    glMatrixMode(GL_PROJECTION);
    glLoadIdentity();
 
    SIZE size = pTexture->GetImageSize();
 
    gluPerspective(45.0f, 1.0f, 0.1f, 100.0f);
    glTranslatef(0, 0, fTranslateZ);
 
    glBindTexture(GL_TEXTURE_2D, pTexture->GetTexture());
 
    glBegin(GL_QUADS);
    glTexCoord2f(0, 0);
    glVertex2f(-15, 15);
    glTexCoord2f(0, 1);
    glVertex2f(-15, -15);
    glTexCoord2f(1, 1);
    glVertex2f(15, -15);
    glTexCoord2f(1, 0);
    glVertex2f(15, 15);
    glEnd();
 
    if (pTexture->HasTransparentColors())
    {
        glDisable(GL_BLEND);
    }
 
    glDisable(GL_TEXTURE_2D);
}
// [/DrawTexture]
0
 Аватар для snake32
3504 / 1687 / 236
Регистрация: 26.02.2009
Сообщений: 8,404
Записей в блоге: 6
28.02.2020, 17:43
пробуйте так
C++
1
2
3
4
5
6
7
8
9
10
11
glBegin(GL_QUADS);
  glColor4f(1,1,1,alpha );// этот цвет будет использован для всех последующих glVertex( alpha э [0..1] )
    glTexCoord2f(0, 0);
    glVertex2f(-15, 15);
    glTexCoord2f(0, 1);
    glVertex2f(-15, -15);
    glTexCoord2f(1, 1);
    glVertex2f(15, -15);
    glTexCoord2f(1, 0);
    glVertex2f(15, 15);
glEnd();
Добавлено через 3 минуты
Цитата Сообщение от fastb1t Посмотреть сообщение
Ещё включено GL_DEPTH_TEST, если это важно.
да, полупрозрачные объекты рисуются в последнюю очередь, иначе альфа-блендинг работает не корректно
1
Software Developer
 Аватар для fastb1t
315 / 229 / 113
Регистрация: 03.05.2017
Сообщений: 1,336
28.02.2020, 17:48  [ТС]
Цитата Сообщение от snake32 Посмотреть сообщение
пробуйте так
Нет, не сработало.
0
 Аватар для snake32
3504 / 1687 / 236
Регистрация: 26.02.2009
Сообщений: 8,404
Записей в блоге: 6
28.02.2020, 17:50
Лучший ответ Сообщение было отмечено Antikl как решение

Решение

Хмм.. после Бинда добавте енв
glBindTexture(GL_TEXTURE_2D, pTexture->GetTexture());
glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE);
2
Software Developer
 Аватар для fastb1t
315 / 229 / 113
Регистрация: 03.05.2017
Сообщений: 1,336
28.02.2020, 17:52  [ТС]
snake32, да, сработало, спасибо.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
28.02.2020, 17:52
Помогаю со студенческими работами здесь

Совместить изображения с соблюдением Альфа канала
Как совместить изображения соблюдая альфа канал???

Редактирование альфа канала (для png)
Доброго времени суток. :wall:Возник вопрос: как можно редактировать альфа канал(слой)(например в изображениях формата PNG). Конкретней:...

Анимация плавного изменение альфа канала у цвета
Здравствуйте. Как через таймер сделать плавное изменение альфа канала сначало в 1 сторону потом другую. Короче нужно добицца эфекта мигания...

*.png файл загружается без альфа-канала
Всем привет! У меня проблема, при загрузке *.png файла с альфа каналом он не распознаётся. Для загрузки изображений использую SDL_image....

Баг с цветом при настройке альфа-канала
Здравствуйте. Столкнулся с такой проблемой. Написал простой шейдер для света и задал такие настройки для альфа-канала: ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Новые блоги и статьи
Расчёт токов в цепи постоянного тока
igorrr37 05.01.2026
/ * Дана цепь постоянного тока с сопротивлениями и напряжениями. Надо найти токи в ветвях. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа и решает её. Последовательность действий:. . .
Новый CodeBlocs. Версия 25.03
palva 04.01.2026
Оказывается, недавно вышла новая версия CodeBlocks за номером 25. 03. Когда-то давно я возился с только что вышедшей тогда версией 20. 03. С тех пор я давно снёс всё с компьютера и забыл. Теперь. . .
Модель микоризы: классовый агентный подход
anaschu 02.01.2026
Раньше это было два гриба и бактерия. Теперь три гриба, растение. И на уровне агентов добавится между грибами или бактериями взаимодействий. До того я пробовал подход через многомерные массивы,. . .
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru