История изменений
Исправление V1KT0P, (текущая версия) :
Блин я понял. Согласно исходникам fbgrab полностью непрозрачный альфа канал это 0x00. Хотя по идеи должен быть 0xFF, что и возращает framebuffer.
Замени вот эту строку:
outbuffer[(i<<2)+Alpha] = srcAlpha >= 0 ? inbuffer[i*4+srcAlpha] : 0xff;
на вот эту:
outbuffer[(i<<2)+Alpha] = '\0';
Должно заработать.
Да, fbgrab инвертирует значение альфы:
png_set_invert_alpha(png_ptr);
По хорошему надо определять надо ли инвертировать или не надо, плюс добавить опцию для принудительной установки инверсии.
Исправление V1KT0P, :
Блин я понял. Согласно исходникам fbgrab полностью непрозрачный альфа канал это 0x00. Хотя по идеи должен быть 0xFF, что и возращает framebuffer.
Замени вот эту строку:
outbuffer[(i<<2)+Alpha] = srcAlpha >= 0 ? inbuffer[i*4+srcAlpha] : 0xff;
на вот эту:
outbuffer[(i<<2)+Alpha] = '\0';
Должно заработать.
Да, fbgrab инвертирует значение альфы:
png_set_invert_alpha(png_ptr);
По хорошему надо определять надо ли инвертировать или не надо, плюс добавить опцию для принудительной установки инверсии.
Исходная версия V1KT0P, :
Блин я понял. Согласно исходникам fbgrab полностью непрозрачный альфа канал это 0x00. Хотя по идеи должен быть 0xFF, что и возращает framebuffer.
Замени вот эту строку:
outbuffer[(i<<2)+Alpha] = srcAlpha >= 0 ? inbuffer[i*4+srcAlpha] : 0xff;
на вот эту:
outbuffer[(i<<2)+Alpha] = '\0';
Должно заработать,