﻿<?xml version='1.0' encoding='UTF-8'?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/"><channel><title>Релиб / Программирование / Программирование  / программная эмуляция наложения с использованием альфа канала / Latest Posts</title><generator>InstantForum.NET v4.1.4</generator><description>Релиб</description><link>http://www.relib.com/forums/</link><webMaster>robot@relib.com</webMaster><lastBuildDate>Wed, 15 Oct 2008 00:51:13 GMT</lastBuildDate><ttl>20</ttl><item><title>RE: программная эмуляция наложения с использованием альфа канала</title><link>http://www.relib.com/forums/Topic897300-15-1.aspx</link><description>Миша, пока ты офигевал, я давно уже решил проблему</description><pubDate>Thu, 31 Aug 2006 20:28:22 GMT</pubDate><dc:creator>John Paramol</dc:creator></item><item><title>RE: программная эмуляция наложения с использованием альфа канала</title><link>http://www.relib.com/forums/Topic897300-15-1.aspx</link><description>[quote][b]John Paramol (22.05.2006)[/b][hr]Привет.&lt;br&gt;&lt;br&gt;Делаю программное альфа наложение в DDRAW1 (аппаратное недоступно). Пытаюсь оптимизировать алгоритм наложения двух изображений глубиной 32 бита (24-битный цвет, 4 байт - альфа канал).&lt;br&gt;&lt;br&gt;Вроде бы с изначально заготовленной таблицей значений цветов:&lt;br&gt;BYTE Tab[256][256][256];//what a huge table!&lt;br&gt;for(int a=0; a&amp;lt;256; ++a)&lt;br&gt; for(int d=0; d&amp;lt;256; ++d)&lt;br&gt; for(int s=0; s&amp;lt;256; ++s)&lt;br&gt; Tab[a][d][s] = (BYTE)(s*a/255.+d*(255-a)/255.);&lt;br&gt;работает быстрее, чем с реальным просчетом:&lt;br&gt;DestCol = DestCol*Alpha/255 + SourceCol*(255-Alpha)/255&lt;br&gt;Формулу, конечно, можно оптимизировать:&lt;br&gt;DestCol = (DestCol*Alpha + SourceCol*(~Alpha))/255,&lt;br&gt;но, все равно, считать дольше, чем адресовать цвет из таблицы.&lt;br&gt;&lt;br&gt;Вроде бы оптимизировал адресацию с помощью ассемблерных вставок. Но работает не намного быстрее C++-эквивалента.&lt;br&gt;Куда еще больше оптимизировать, незнаю. Может быть кто-то делал такое, или, может быть, не стоит пытаться - все равно тормоза жесткие будут?[/quote]&lt;br&gt;&lt;br&gt;&lt;br&gt;Офигеть...</description><pubDate>Mon, 28 Aug 2006 13:45:48 GMT</pubDate><dc:creator>999Misha999</dc:creator></item><item><title>RE: программная эмуляция наложения с использованием альфа канала</title><link>http://www.relib.com/forums/Topic897300-15-1.aspx</link><description>точнее, даже так&lt;BR&gt;DestCol = (DestCol*Alpha + SourceCol*((BYTE)~Alpha))&amp;gt;&amp;gt;8&lt;/P&gt;&lt;P&gt;тормозит :(</description><pubDate>Mon, 22 May 2006 21:26:24 GMT</pubDate><dc:creator>John Paramol</dc:creator></item><item><title>программная эмуляция наложения с использованием альфа канала</title><link>http://www.relib.com/forums/Topic897300-15-1.aspx</link><description>Привет.&lt;/P&gt;&lt;P&gt;Делаю программное альфа наложение в DDRAW1 (аппаратное недоступно). Пытаюсь оптимизировать алгоритм наложения двух изображений глубиной 32 бита (24-битный цвет, 4 байт - альфа канал).&lt;/P&gt;&lt;P&gt;Вроде бы с изначально заготовленной таблицей значений цветов:&lt;BR&gt;BYTE Tab[256][256][256];//what a huge table!&lt;BR&gt;for(int a=0; a&amp;lt;256; ++a)&lt;BR&gt;  for(int d=0; d&amp;lt;256; ++d)&lt;BR&gt;    for(int s=0; s&amp;lt;256; ++s)&lt;BR&gt;      Tab[a][d][s] = (BYTE)(s*a/255.+d*(255-a)/255.);&lt;BR&gt;работает быстрее, чем с реальным просчетом:&lt;BR&gt;DestCol = DestCol*Alpha/255 + SourceCol*(255-Alpha)/255&lt;BR&gt;Формулу, конечно, можно оптимизировать:&lt;BR&gt;DestCol = (DestCol*Alpha + SourceCol*(~Alpha))/255,&lt;BR&gt;но, все равно, считать дольше, чем адресовать цвет из таблицы.&lt;/P&gt;&lt;P&gt;Вроде бы оптимизировал адресацию с помощью ассемблерных вставок. Но работает не намного быстрее C++-эквивалента.&lt;BR&gt;Куда еще больше оптимизировать, незнаю. Может быть кто-то делал такое, или, может быть, не стоит пытаться - все равно тормоза жесткие будут?</description><pubDate>Mon, 22 May 2006 20:15:05 GMT</pubDate><dc:creator>John Paramol</dc:creator></item></channel></rss>