структуры openGL ES от PNGs с прозрачностью представляются со странными артефактами и сводящей меня с ума!

Его лучшее для использования его для каждого метода, предназначенного как переопределение и Java 6 +, каждый метод, предназначенный как реализация интерфейса.

Первый, это ловит орфографические ошибки как" hashcode()" вместо" hashCode()" во время компиляции. Это может быть экранирующим для отладки, почему результат метода, кажется, не соответствует коду, когда реальная причина состоит в том, что код никогда не вызывается.

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

12
задан genpfault 18 June 2010 в 20:57
поделиться

3 ответа

Одна проблема, которую я вижу из кода, заключается в том, что вы не очищаете свой контекст перед рисованием изображения. Поскольку ваше изображение содержит прозрачные области и построено на фоне, вы просто видите, что находится в памяти, выделенной malloc. Попробуйте установить режим Quartz Blend для копирования перед рисованием изображения:

CGContextSetBlendMode(textureContext, kCGBlendModeCopy);

Вы также можете использовать calloc вместо malloc, поскольку calloc дает вам обнуленную память.

Ваше смешивание OpenGL правильно:

glBlendFunc(GL_ONE, GL_ONE_MINUS_SRC_ALPHA);

дает вам Porter-Duff " OVER ", чего вы обычно и хотите.

19
ответ дан 2 December 2019 в 18:20
поделиться

Попробуйте сначала стереть CGContextRef:

CGContextSetRGBFillColor(ctxt, 1, 1, 1, 0);
CGContextFillRect(ctxt, CGRectMake(0, 0, w, h));
1
ответ дан 2 December 2019 в 18:20
поделиться

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

glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
0
ответ дан 2 December 2019 в 18:20
поделиться
Другие вопросы по тегам:

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