Честно говоря есть много других дел это во первых, во вторых уже достигнуто оптимальное ибображение. Во вторых дел еще и других много...установить герцовку в 100гц, но при этом по два раза показывать каждый спековский экран?! поидее должны получать 50гц...
Для TFT как ни сглаживай, все равно лажа будет, ибо имеем дело с физической матрицей пикселей (большинство дизайнеров предпочитают CRT) уже реализовано... и причем давно, только на CRT это действительно помогает, а на TFT выглядит только хуже чем необработанное изображение. (отсюда наверняка и мнение что встроенные фильтры нафиг не использовать, а на самом деле виновник - TFTустановить разрешение 800х600 и делать увеличение х2 или может даже еще меньше и отдать на откуп устройству вывода "размазываение/масштабирование" пикселей?! в этом случае на crt'шках будет родной спеку сканлайн со всеми его свойствами...)
Добавлено через 14 минут
Кстати если в предложенных вариантах сменить параметры фильтрации
filter=1 или 2, на CRT мониторах получается достаточно похожее изображение как на мониторе (не видно квадратности пикселов)
Привожу алгоритм получения конечного результата:
Если рассмотреть уровни цветов на результирующей картинке то возможны следующие варианты смешения
00 - черный+черный
n0 - no_bright+черный
b0 - bright+черный
nn - no_bright+no_bright
nb - no_bright+bright = bn - bright+no_bright
bb - bright+bright
Исходя из этого нам необходимо построить таблицу значения результирующей яркости
для вариантов сложения цветов (0..15)х(0..15) - 0..7 - цвета без яркости, 8..15 - цвето со включенной яркостью.
В результате имеем таблицу palette[0..15][0..15]:
Умножая битовую раскладку каждой из компонент R,G,B на значение из таблицы получаем искомый результат.
Битовая раскладки:
arr_bit_r:array[0..15] of byte =(0,0,1,1,0,0,1,1,0,0,1,1,0,0,1,1);
arr_bit_b:array[0..15] of byte =(0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1);
arr_bit_g:array[0..15] of byte =(0,0,0,0,1,1,1,1,0,0,0,0,1,1,1,1);
подпрограмма получения цвета точки:
R:=arr_palette[index_color0*arr_bit_r[index_color0],index_color1*arr_bit_r[index_color1]];
G:=arr_palette[index_color0*arr_bit_g[index_color0],index_color1*arr_bit_g[index_color1]];
B:=arr_palette[index_color0*arr_bit_b[index_color0],index_color1*arr_bit_b[index_color1]];
где index_color0, index_color1 - значение цвета компонент с первого и второго экрана в виде BCCC, где ССС - цвет 0..7, B - режим bright 1/0




)
Ответить с цитированием
