Непрозрачность структуры изменения в OpenGL

Было бы полезно, если бы вы поделились своим кодом, который заставляет вас думать, что текст отсутствует, но вы, вероятно, можете игнорировать такие элементы < br />, как это:

var contentNode = msg..content; // or however you'd normally get to this node
// concatenate all child nodes of content with type text
var content = contentNode.text().toString();
11
задан genpfault 18 June 2010 в 23:19
поделиться

6 ответов

Спасибо всем за идеи. Я играл и с glColor4f, и с glTexEnv и наконец заставил себя внимательно прочитать справочную страницу glTexEnv. На странице руководства сказано, что в режиме текстурирования GL_MODULATE результирующий цвет вычисляется путем умножения входящего фрагмента на цвет текстурирования (C = Cf × Ct), то же самое касается альфа-канала. Я попробовал glColor4f (1, 1, 1, opacity), и это не сработало, но передача желаемой непрозрачности во все четыре аргумента вызова сработала. (Все еще не знаю почему.)

2
ответ дан 3 December 2019 в 03:05
поделиться

Используйте объединитель структуры. Установите наложение текстур, чтобы сделать a GL_MODULATE операция между структурой и постоянным цветом. Затем измените постоянный цвет из своего кода (glTexEnv, GL_TEXTURE_ENV_COLOR).

Это должно стать "свободным" с точки зрения производительности. На большинстве (если не все) операции объединителя графических процессоров берут то же количество циклов GPU (обычно 1), поэтому просто использование структуры по сравнению с выполнением модулировать операции (или любой другой операции) является точно той же стоимостью.

7
ответ дан 3 December 2019 в 03:05
поделиться

Я понятия не имею о OpenGL ES, но в стандартном OpenGL Вы установили бы непрозрачность путем объявления цвета для структуры перед использованием его:

//          R,   G,   B,   A
glColor4f(1.0, 1.0, 1.0, 0.5);

Пример дал бы Вам 50%-ю альфу, не влияя на цвет Вашей структуры. Путем корректировки других значений можно сместить цвет структуры также.

16
ответ дан 3 December 2019 в 03:05
поделиться

Самый простой путь состоит в том, чтобы изменить альфа-значение структуры на лету. Так как Вы говорите OpenGL о структуре в какой-то момент, у Вас будет битовый массив в памяти. Поэтому просто снова переплетите структуру к тому же идентификатору структуры. В случае, если у Вас нет его в памяти, (из-за пространственных ограничений, так как Вы находитесь на ES), можно получить структуру к буферу снова, с помощью glGetTexImage (). Это - чистое решение.

Сохраняющие/получающие операции являются немного дорогостоящими, тем не менее, таким образом, Вы могли бы хотеть другое решение. Думая об этом, Вы смогли работать с геометрией позади Вашего геометрия, отображающая Вашу структуру или просто работать над материалом/цветом геометрии, которая содержит структуру. Вы, вероятно, захотите иметь некоторое аддитивное смешивание задней геометрии. Используя glBlendFunc

glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_DST_ALPHA),

Вы смогли "легко" и - более важный, дешево - достигают желаемого эффекта.

1
ответ дан 3 December 2019 в 03:05
поделиться

Скорее всего, вы используете cg для преобразования изображения в текстуру. Когда вы используете cg, альфа предварительно умножается, поэтому вам нужно использовать альфа для rgba функции color4f.

1
ответ дан 3 December 2019 в 03:05
поделиться

Я подозреваю, что у вас был черный фон, и, таким образом, уменьшая количество каждого цвета, вы эффективно исчезали цвет к черному.

0
ответ дан 3 December 2019 в 03:05
поделиться
Другие вопросы по тегам:

Похожие вопросы: