Я хотел бы ослабить объект 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 с цветами? Благодарю.
Спасибо - это похоже на то, что мне нужно. Я должен был указать, что я все еще использую OpenGL ES 1, и кажется, что этот параметр недоступен, поэтому я собираюсь перейти к более современной установке OpenGL для моего проекта. – user2450110
Да, это все, спасибо! –