




glBlendFunc применяется только к тому, как окончательный цветовой фрагмент смешивается с буфером кадра. Я думаю, что вам нужно мультитекстурирование, чтобы объединить две текстуры путем смешивания этапов текстуры с помощью glTexEnv или использования фрагментного шейдера для объединения двух текстур.
DavidG: Если в технике используется ARB_texture_env_combine или шейдеры, то это будет. Оба широко поддерживаются.
Извините, не могу сделать это простым смешиванием. Мы, например, делали то же самое, используя шейдеры фрагментов.
Разделение шейдеров. Если вы можете использовать шейдер, гораздо проще просто делать с данными то, что вы хотите, чем возиться с загадочными функциями смешивания.
К сожалению, это для openGL ES на iPhone, так что никаких шейдеров, но точка зрения принята. Моя проблема заключалась в очень упрощенной версии вопросов, мне нужно было применить простой цвет (включая альфа) к части определенной текстуры. Как отметил Ли, смешение текстур позволяет альфа-каналу отображаться в буфере кадра. Решение заключалось в том, чтобы настоять на том, чтобы художник сделал «бит действия» текстуры белым, а затем назначил цвет вершинам, которые я визуализировал. Что-то вроде этого.
glTexCoordPointer( 2, GL_FLOAT, 0, sprite->GetTexBuffer() );
glVertexPointer( 3, GL_FLOAT, 0, sprite->GetVertexBuffer() );
glColorPointer( 4, GL_FLOAT, 0, sprite->GetColorBuffer() );
glDrawArrays( GL_TRIANGLES, 0, 6 ); // Draw 2 triangles
Если даже у него есть текстура, наличие цвета означает, что он добавляет к цвету текстуры, поэтому, если это альфа, он остается альфа, а где он белый (как я должен был это сделать), он становится цветом цвета. указатель в точке.
Что означает «бит действия»? Решает ли то, что вы здесь описываете, вашу проблему?
да, это решило мою проблему. "бит действия" - это часть, которую я хочу нарисовать другим цветом. в основном, если мне нужна одна текстура (например, набор шрифтов), где каждому непрозрачному биту нужен собственный цвет, я использовал это.
Требуется ли для этого использование расширения ARB?