2015-03-07 2 views
1

Я хотел бы ослабить объект VBO в OpenGL ES. ВБО обращается с использованием формата RGBA GL_UNSIGNED_BYTE так:Fade Out OpenGL VBO с цветами, но без текстуры

glEnableClientState(GL_COLOR_ARRAY); 
glColorPointer(4, GL_UNSIGNED_BYTE, .... 

Я довольно уверен, что я должен настроить смешивание так:

glEnable(GL_BLEND); 
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); 
glColor4f(1, 1, 1, alpha); // I will be changing alpha from 1 to 0 

Но это не выцветает, что имеет смысл, так как я подумайте, что src alpha исходит из моего VBO, который исправлен.

Итак, я подумал, что, может быть, мне нужно просто передать 3 байта драйверу, поддерживающему мои цвета VBO, а затем альфа будет поступать из команды glColor4f.

glColorPointer(3, GL_UNSIGNED_BYTE, .... 

Но это сбой по непонятным причинам (разработка iPad с Xcode), который я все еще пытаюсь расшифровать. Я бы подумал, что все мои смещения glColorPointer будут все еще в порядке: у меня все еще есть все 4 байта (RGBA) в MyVertexObject, поэтому я не думаю, что это проблема дополнения - я не изменяю никаких значений смещения в команде glColorPointer, просто изменил 4 до a. 3.

Если отключить GL_COLOR_ARRAY, то fade работает отлично, но теперь я потерял цвета, и я использовал белый цвет, который я установил выше.

Так что я застрял, поскольку я не могу контролировать альфа-канал отдельно от цветов RGB. Есть ли другой способ угасать VBO с цветами? Благодарю.

ответ

3

Вы можете указать коэффициенты смешивания независимо от цвета в вашем РВО, используя GL_CONSTANT_ALPHA как функция бленды:

glBlendColor(0.0f, 0.0f, 0.0f, alpha); 
glBlendFunc(GL_CONSTANT_ALPHA, GL_ONE_MINUS_CONSTANT_ALPHA); 

Это будет использовать альфа-компонент, указанный в glBlendColor() для функции бленды.

+0

Спасибо - это похоже на то, что мне нужно. Я должен был указать, что я все еще использую OpenGL ES 1, и кажется, что этот параметр недоступен, поэтому я собираюсь перейти к более современной установке OpenGL для моего проекта. – user2450110

+0

Да, это все, спасибо! –

Смежные вопросы