24 bit -> 32 bit
От: Andrey A. Ugolnik Беларусь http://www.ugolnik.info
Дата: 10.01.02 10:49
Оценка:
Прывит!

Как произвести подобное преобразование. У меня есть имидж (.TGA 24 бита), мне нужно вывести на DirectDraw поверхность в 32 бита.
--
Regards, _Andrey_
http://www.ugolnik.info
Re: 24 bit -> 32 bit
От: Lostar Россия  
Дата: 10.01.02 13:27
Оценка:
Здравствуйте Andrey A. Ugolnik, Вы писали:

AAU>Прывит!


AAU>Как произвести подобное преобразование. У меня есть имидж (.TGA 24 бита), мне нужно вывести на DirectDraw поверхность в 32 бита.

Можешь воспользоватся сторонней библиотекой для работы с имиджами :о) Например FreeImage. Ну а потом перекинь ее в поверхность DirectDrawSurface. (с учетом питча и т.п.)
Вроде бы так, попробуй, я не уверен на все 100% но я бы пошел в этом направлении (знаю формат tga, поэтому не могу сказать можно ли обойтись без FreeImage или т.п.)
Вобщем если получится — скажи, плз
С уважением, Николай.
Re[2]: 24 bit -> 32 bit
От: Lostar Россия  
Дата: 10.01.02 13:28
Оценка:
:о))) Я хотел сказать: ... не знаю формат tga ... sorry
С уважением, Николай.
Re[3]: 24 bit -> 32 bit
От: Andrey A. Ugolnik Беларусь http://www.ugolnik.info
Дата: 15.01.02 11:21
Оценка:
Здравствуйте Lostar, Вы писали:

L>:о))) Я хотел сказать: ... не знаю формат tga ... sorry


Я знаю формат тарги, но это мне ничего не дает.
--
Regards, _Andrey_
http://www.ugolnik.info
Re[4]: 24 bit -> 32 bit
От: Zilog Россия  
Дата: 15.01.02 11:37
Оценка:
Здравствуйте Andrey A. Ugolnik, Вы писали:

AAU>Здравствуйте Lostar, Вы писали:


L>>:о))) Я хотел сказать: ... не знаю формат tga ... sorry


AAU>Я знаю формат тарги, но это мне ничего не дает.


Тебе надо 24bit TGA > 32bit Bitmap ?
А GDI+ не пробовал?
Don't work hard, work smart.
Re[5]: 24 bit -> 32 bit
От: Andrey A. Ugolnik Беларусь http://www.ugolnik.info
Дата: 15.01.02 11:47
Оценка:
L>>>:о))) Я хотел сказать: ... не знаю формат tga ... sorry

AAU>>Я знаю формат тарги, но это мне ничего не дает.


Z>Тебе надо 24bit TGA > 32bit Bitmap ?


Да.

Z>А GDI+ не пробовал?


Нет, не пробовал. Для меня это не подходит.

И еще вопрос, как сделать преобразование из 24 бит в 16, но с дизеренгом. Иначе появляются не плавные переходы.
--
Regards, _Andrey_
http://www.ugolnik.info
Re[5]: 24 bit -> 32 bit
От: Lostar Россия  
Дата: 15.01.02 12:21
Оценка:
FreeImage:

FreeImage_LoadTARGA
FIBITMAP *FreeImage_LoadTARGA(const char *filename, int flags = TARGA_DEFAULT);

Loads the given TARGA file into a FreeImage bitmap. If the file is loaded successfully, memory for it is allocated and a bitmap pointer is returned. If the file couldn't be loaded, FreeImage_LoadTARGA returns NULL.
Flags defaults to TARGA_DEFAULT. The flags parameter can be passed the following values to change the behaviour of the load plugin:
FIBITMAP *dib = FreeImage_LoadTARGA("test.tga");
FIBITMAP *dib = FreeImage_LoadTARGA("test.tga", TARGA_LOAD_RGB888);

Value Meaning
TARGA_LOAD_RGB888 If the TARGA file is 32-bit, it is automatically converted to 24-bit.
TARGA_LOAD_RGB555 If the TARGA file is 16-bit, it is not automatically converted to 24-bit

FreeImage_ConvertTo32Bits
FIBITMAP *FreeImage_ConvertTo32Bits(FIBITMAP *dib);

Converts the given bitmap to 32 bits.

вывод на Surface:
см: http://freeimage.konexpoint.com/topic.asp?TOPIC_ID=255&FORUM_ID=2&CAT_ID=2&Topic_Title=FIBITMAP+to+DirectDraw+Surface%3F+%3AP&Forum_Title=General+Discussion
(там паренек спрашивает как это сделать, точнее как привести его прогу к рабочему состоянию)
кстати поищи еще там в форуме, может я чего не заметил
был у меня еще один url где лежал 100% работающий пример, да что то найти не могу
Вобщем если получится было бы круте если ты бы кинул сюда образец(я вскоре тоже хочу этим заняться) :)
С уважением, Николай.
Re[6]: 24 bit -> 32 bit
От: Andrey A. Ugolnik Беларусь http://www.ugolnik.info
Дата: 15.01.02 13:12
Оценка:
Спасибо Lostar, но мне не подходит вариант с FreeImage.
Тем более, что загрузку тарги я уже давно написал в своем движке. Осталось ее правильно преобразовать к примари сурфейсу. И если примари сурфейс 16 бит, то сделать ее и дизеринг.
А по поводу 32 бит я хотел узнать только что там где?
Пример 16 бит — R5G6B5, или R5G5B5.
Пример 24 бита — R8G8B8.
А вот что и как у 32 бит?


L>FreeImage:


L>FreeImage_LoadTARGA

L>
FIBITMAP *FreeImage_LoadTARGA(const char *filename, int flags = TARGA_DEFAULT);

L>Loads the given TARGA file into a FreeImage bitmap. If the file is loaded successfully, memory for it is allocated and a bitmap pointer is returned. If the file couldn't be loaded, FreeImage_LoadTARGA returns NULL.
L>Flags defaults to TARGA_DEFAULT. The flags parameter can be passed the following values to change the behaviour of the load plugin:
L>FIBITMAP *dib = FreeImage_LoadTARGA("test.tga");
L>FIBITMAP *dib = FreeImage_LoadTARGA("test.tga", TARGA_LOAD_RGB888);

L>Value Meaning

L>TARGA_LOAD_RGB888 If the TARGA file is 32-bit, it is automatically converted to 24-bit.
L>TARGA_LOAD_RGB555 If the TARGA file is 16-bit, it is not automatically converted to 24-bit

L>FreeImage_ConvertTo32Bits

L>
FIBITMAP *FreeImage_ConvertTo32Bits(FIBITMAP *dib);

L>Converts the given bitmap to 32 bits.

L>вывод на Surface:

L>см: http://freeimage.konexpoint.com/topic.asp?TOPIC_ID=255&FORUM_ID=2&CAT_ID=2&Topic_Title=FIBITMAP+to+DirectDraw+Surface%3F+%3AP&Forum_Title=General+Discussion
L>(там паренек спрашивает как это сделать, точнее как привести его прогу к рабочему состоянию)
L>кстати поищи еще там в форуме, может я чего не заметил
L>был у меня еще один url где лежал 100% работающий пример, да что то найти не могу
L>Вобщем если получится было бы круте если ты бы кинул сюда образец(я вскоре тоже хочу этим заняться)
--
Regards, _Andrey_
http://www.ugolnik.info
Re[7]: 24 bit -> 32 bit
От: retalik www.airbandits.com/
Дата: 15.01.02 15:38
Оценка:
Здравствуйте Andrey A. Ugolnik, Вы писали:

AAU>А по поводу 32 бит я хотел узнать только что там где?

AAU>Пример 16 бит — R5G6B5, или R5G5B5.
AAU>Пример 24 бита — R8G8B8.
AAU>А вот что и как у 32 бит?
Да проще некуда: A8R8G8B8, где A — либо Alpha (прозрачность), либо неиспользуемый байт для выравнивания
Успехов,
Виталий.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.