PMG

Форумы по созданию игр
Текущее время: 19 апр 2024 11:01

Часовой пояс: UTC + 3 часа [ Летнее время ]




Начать новую тему Ответить на тему  [ Сообщений: 31 ]  На страницу 1, 2, 3  След.
Автор Сообщение
 Заголовок сообщения: прозрачность?
СообщениеДобавлено: 08 июл 2007 19:53 
Не в сети
Новичок

Зарегистрирован: 09 фев 2007 17:38
Сообщения: 6
как сделать так чтобы выводя допустим текстуру на плоскость
не выводился а был прозрачным один из заданых цветов
допустим красный ?вся текстура на плоскости вывелась кроме тех мест где был красный цвет(эти места стали бы прозрачными) :?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 09 июл 2007 09:07 
Не в сети
Гуру
Аватара пользователя

Зарегистрирован: 03 авг 2004 10:37
Сообщения: 2694
Где в DX или в OGL?

_________________
С уважением, Сергей


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 09 июл 2007 11:08 
Не в сети
Любитель

Зарегистрирован: 15 янв 2007 18:48
Сообщения: 39
to MagicWolf форум по OGL :D


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 09 июл 2007 19:43 
Не в сети
Новичок

Зарегистрирован: 09 фев 2007 17:38
Сообщения: 6
MagicWolf писал(а):
Где в DX или в OGL?

OpenGL


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 09 июл 2007 22:17 
Не в сети
Опытный
Аватара пользователя

Зарегистрирован: 29 апр 2006 21:28
Сообщения: 404
Цитата:
//-----------------------------------------------------------------------------
// Name: ogl_color_key.cpp
// Author: Kevin Harris
// Last Modified: 02/01/05
// Description: This sample demonstrates how to use a color key to create a
// RGBA texture image that supports alpha transparency from a
// simpler RGB image like a .bmp bitmap.
//
// Control Keys: Left Mouse Button - Spin the view
// F1 - Toggle color key transparency
//-----------------------------------------------------------------------------
void loadTexture( void )
{
AUX_RGBImageRec *pImage_RGB = auxDIBImageLoad( ".\\door.bmp" );
unsigned char *pImage_RGBA = NULL;

if( pImage_RGB != NULL )
{
int imageSize_RGB = pImage_RGB->sizeX * pImage_RGB->sizeY * 3;
int imageSize_RGBA = pImage_RGB->sizeX * pImage_RGB->sizeY * 4;

// allocate buffer for a RGBA image
pImage_RGBA = new unsigned char[imageSize_RGBA];

//
// Loop through the original RGB image buffer and copy it over to the
// new RGBA image buffer setting each pixel that matches the key color
// transparent.
//

int i, j;

for( i = 0, j = 0; i < imageSize_RGB; i += 3, j += 4 )
{
// Does the current pixel match the selected color key?
if( pImage_RGB->data[i] == g_keyColor[0] &&
pImage_RGB->data[i+1] == g_keyColor[1] &&
pImage_RGB->data[i+2] == g_keyColor[2] )
{
pImage_RGBA[j+3] = 0; // If so, set alpha to fully transparent.
}
else
{
pImage_RGBA[j+3] = 255; // If not, set alpha to fully opaque.
}

pImage_RGBA[j] = pImage_RGB->data[i];
pImage_RGBA[j+1] = pImage_RGB->data[i+1];
pImage_RGBA[j+2] = pImage_RGB->data[i+2];
}

glGenTextures( 1, &g_textureID );
glBindTexture( GL_TEXTURE_2D, g_textureID );
glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER, GL_NEAREST);
glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER, GL_NEAREST);

// Don't forget to use GL_RGBA for our new image data... we support Alpha transparency now!
glTexImage2D( GL_TEXTURE_2D, 0, GL_RGBA, pImage_RGB->sizeX, pImage_RGB->sizeY, 0,
GL_RGBA, GL_UNSIGNED_BYTE, pImage_RGBA );
}

if( pImage_RGB )
{
if( pImage_RGB->data )
free( pImage_RGB->data );

free( pImage_RGB );
}

if( pImage_RGBA )
delete [] pImage_RGBA;
}


http://www.codesampler.com

_________________
С уважением,Блинов Андрей.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 16 июл 2007 19:39 
Не в сети
Новичок

Зарегистрирован: 04 июн 2007 23:37
Сообщения: 8
Вот бы хотелось бы узнать, а какими программами можно создавать текстуры с альфа каналом???
Я использую библиотеку DevIL для загрузки картинок и текстур, она поддерживает большое число разных форматов, в том числе и с альфа-каналом.
Вот только я не знаю какой ПРОГРАММОЙ можно создавать такие текстуры.
"Просканировал" возможности для этого Corel Photopaint и Gimp (раньше просто не было необходимости), но ничего "хорошего" там не нашёл.
Создавая PNG при выходе можно задавать прозрачный цвет - для web это подходит, но текстура загруженная DevIL'ом остаётся 24битной.
Пробовал вывести в targa формате - но там вообще какая-то путаница с альфа-каналом: не фига не понял как его там задавать. Чтобы там не пробовал задать - загруженная DevIL'ом она имеет прозрачность но СОВЕРШЕННО не там где я бы мог предположить...

Собственно, хотелось бы спросить какие программы можно использовать (есть ли бесплатные) или быть может какие конвертеры...


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 17 июл 2007 14:30 
Не в сети
Гуру
Аватара пользователя

Зарегистрирован: 03 авг 2004 10:37
Сообщения: 2694
Я почему-то считал, что альфа-канал лучше задавать отдельным изображением. Или я не прав?

_________________
С уважением, Сергей


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 12 авг 2007 13:25 
Не в сети
Любитель

Зарегистрирован: 12 авг 2007 13:19
Сообщения: 20
MagicWolf писал(а):
Я почему-то считал, что альфа-канал лучше задавать отдельным изображением. Или я не прав?


Ты не прав: приходится загружать 2 картинки вместо одной, что выходит дорого по ресурсам...


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 13 авг 2007 12:39 
Не в сети
Новичок

Зарегистрирован: 04 июн 2007 23:37
Сообщения: 8
wingman писал(а):
MagicWolf писал(а):
Я почему-то считал, что альфа-канал лучше задавать отдельным изображением. Или я не прав?


Ты не прав: приходится загружать 2 картинки вместо одной, что выходит дорого по ресурсам...


Это первое. Во вторых нужно придумывать специальную загрузку этих картинок (ну или воспользоваться готовым алгоритмом) - не знаю, насколько это нагружает процессор...

В-третьих - просто лень. Рисовать две картинки, когда гораздо нагляднее создавать картинку с уже альфа-каналом.

Как будет время - буду пытаться разобраться с этим...


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 14 авг 2007 10:43 
Не в сети
Гуру
Аватара пользователя

Зарегистрирован: 03 авг 2004 10:37
Сообщения: 2694
wingman писал(а):
MagicWolf писал(а):
Я почему-то считал, что альфа-канал лучше задавать отдельным изображением. Или я не прав?


Ты не прав: приходится загружать 2 картинки вместо одной, что выходит дорого по ресурсам...


Но тогда цветом кодировать альфа канал?

_________________
С уважением, Сергей


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 14 авг 2007 11:10 
Не в сети
Любитель

Зарегистрирован: 12 авг 2007 13:19
Сообщения: 20
MagicWolf писал(а):
wingman писал(а):
MagicWolf писал(а):
Я почему-то считал, что альфа-канал лучше задавать отдельным изображением. Или я не прав?


Ты не прав: приходится загружать 2 картинки вместо одной, что выходит дорого по ресурсам...


Но тогда цветом кодировать альфа канал?


В смысле?
Во многих форматах изображений (.tga, .gif, по-моему и .jpg) кроме стандартных трёх каналов R,G,B есть четвертый канал "A" - альфа. Он и задаёт прозрачность.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 15 авг 2007 22:02 
Не в сети
Опытный
Аватара пользователя

Зарегистрирован: 29 апр 2006 21:28
Сообщения: 404
А вот тут вы неправы!Посчитаем?
RGBA: R = 8/G = 8/B = 8/A = 8
RGB: R = 8/G = 8/B = 8 + Alpha Image 1 Bit
Гыы... считайте 8)

_________________
С уважением,Блинов Андрей.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 16 авг 2007 09:16 
Не в сети
Любитель

Зарегистрирован: 12 авг 2007 13:19
Сообщения: 20
Assassin писал(а):
А вот тут вы неправы!Посчитаем?
RGBA: R = 8/G = 8/B = 8/A = 8
RGB: R = 8/G = 8/B = 8 + Alpha Image 1 Bit
Гыы... считайте 8)


Я не говорил, что затрат памяти меньше - при современной мощности компов это не главное =) Сейчас важна скорость - а загрузка одной картинки RGBA в любом случае быстрее двух картинок RGB + A


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 16 авг 2007 10:10 
Не в сети
Гуру
Аватара пользователя

Зарегистрирован: 03 авг 2004 10:37
Сообщения: 2694
Скорость скорее всего будет одной и той же, так как количество байт и в том и в другом случае не будет меньше. Так как альфа-канал можно держать как серое изображение. И насколько помню чаще всего так и делают. Так как его легче редактировать. Но, если есть формат, который поддерживает прозрачность, то нет проблем. Надо только иметь редактор который так запишет и будет так редактрировать. Я насколько помню, реально кроме psd и PhotoShop ничего такого нет. Или есть, но только в dds.

В tga и tiff скорее всего поддерживают, но как в них это записать?

_________________
С уважением, Сергей


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 16 авг 2007 15:29 
Не в сети
Любитель

Зарегистрирован: 12 авг 2007 13:19
Сообщения: 20
MagicWolf писал(а):
В tga и tiff скорее всего поддерживают, но как в них это записать?


MagicWolf писал(а):
PhotoShop


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 31 ]  На страницу 1, 2, 3  След.

Часовой пояс: UTC + 3 часа [ Летнее время ]


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 40


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения

Найти:
Перейти:  
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB