Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > разработка игр, графический дизайн и моделирование > Gamedev - cоздание игр: Unity, OpenGL, DirectX
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 29.04.2013, 20:23   #11
intmain
Играюсь с Python
Форумчанин
 
Аватар для intmain
 
Регистрация: 12.12.2012
Сообщений: 340
По умолчанию

Цитата:
Почитайте о формате файла BMP
24 битный у мну уже грузится, чего там читать ?
Меньшие битности мне просто не нужны, а больших бит у мну с бмп получить не удалось, пришлось тга курить, там с альфой все ок.

В БМП, в заголовке лежит int это оффсет до непосредственно данных растра.
Читается все за раз, и нет там никаких хождений по мукам и рандомных чтений, Все данные в линии лежат. Однако эту линию можно несколько раз сложить по ширине и получить рисунок.
Код:
	Out_PixelsSize = Out_Width * Out_Height * 3 //B8G8R8 = 24bit = 3 bytes;

	File.seekg (OffsetToPixels, std::ios::beg);
	*Out_Pixels = (char*)malloc(Out_PixelsSize);
	
	File.read(*Out_Pixels, Out_PixelsSize);
	File.close();
загрузка считанного растра в ГЛ.
У БМП порядок цветов флипнут, они лежат в виде - GL_BGR, а в ГЛ будет храниться в привычном виде - GL_RGB.
Код:
	if (LoadBmp(_FileName, BPP, W, H, &Data, DataSize )) 
	{

		glGenTextures(1, &ID);
		glBindTexture(GL_TEXTURE_2D, ID);

#define GL_BGR 0x80E0
		glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, W, H, 0, GL_BGR, GL_UNSIGNED_BYTE, Data);

		glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
		glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);

		return true;
	}

	if (Data != 0) free(Data);
Что ел то - в долг, что жил то - зря.
Для избранных. ))
Секретные разработки

Последний раз редактировалось intmain; 29.04.2013 в 20:27.
intmain вне форума Ответить с цитированием
Старый 29.04.2013, 22:14   #12
s-andriano
Старожил
 
Аватар для s-andriano
 
Регистрация: 08.04.2012
Сообщений: 3,229
По умолчанию

Цитата:
Сообщение от intmain Посмотреть сообщение
24 битный у мну уже грузится, чего там читать ?
Чукча не читатель, чукча - писатель?

По какому смещению от начала данных начинается вторая (считая с единицы) строка 24-разрядного файла шириной 3 пикселя?
s-andriano вне форума Ответить с цитированием
Старый 29.04.2013, 22:50   #13
intmain
Играюсь с Python
Форумчанин
 
Аватар для intmain
 
Регистрация: 12.12.2012
Сообщений: 340
По умолчанию

Цитата:
Чукча не читатель, чукча - писатель?
Вообще китобой промысловик, ни тунеядец и ни алкаш и просто хороший человек.

Цитата:
По какому смещению от начала данных начинается вторая (считая с единицы) строка 24-разрядного файла шириной 3 пикселя?
Я вот одного понять не могу зачем мне эти строки про которые вы все толкуете, если я работаю с набором пикселей.

В общем виде как-то так:

Код:
struct bmp_pixel24 
{
union 
{
char BGR[3]
}
}

bmp_pixel24* FirstPixelInLine = (bmp_pixel24*) (image.data + (image.width * sizeof(bmp_pixel24)) * NeededLine);
Что ел то - в долг, что жил то - зря.
Для избранных. ))
Секретные разработки
intmain вне форума Ответить с цитированием
Старый 30.04.2013, 07:49   #14
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

Цитата:
Пусть хоть первый пиксель растра и находиться на выровненном адресе, последующие как мне представляется - нет.
а может вы прочтете что уже который раз говорится что строка битмапа, а не пиксель.

потому что ваш набор пикселей состоит из строк.
если в вашем битмапе нет выравнивания, так и ставьте один, а если то OpenGL должна об этом знать чтоб верно загрузить битмап.
это не для внутренностей сделано, а для того чтоб верно грузить то что есть.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.

Последний раз редактировалось Пепел Феникса; 30.04.2013 в 07:52.
Пепел Феникса вне форума Ответить с цитированием
Старый 30.04.2013, 17:26   #15
s-andriano
Старожил
 
Аватар для s-andriano
 
Регистрация: 08.04.2012
Сообщений: 3,229
По умолчанию

Цитата:
Сообщение от intmain Посмотреть сообщение
Я вот одного понять не могу зачем мне эти строки про которые вы все толкуете, если я работаю с набором пикселей.
А я не могу понять, зачем задавать вопросы, если Вас совершенно не интересуют ответы?

Ну, получил ответ на свой вопрос, - не спеши возражать, сначала разберись, о чем вообще идет речь!
s-andriano вне форума Ответить с цитированием
Старый 30.04.2013, 18:45   #16
intmain
Играюсь с Python
Форумчанин
 
Аватар для intmain
 
Регистрация: 12.12.2012
Сообщений: 340
По умолчанию

Цитата:
если Вас совершенно не интересуют ответы?
С чего вы взяли? Очень даже наоборот.
Я изо всех сил пытаюсь связать и понять при чем тут строки битмапа.
Раз строка пикселей длиной в ширину изображения
Два строка пикселей длиной в ширину изображения
...
отличная считалочка на сон грядущий.
Что ел то - в долг, что жил то - зря.
Для избранных. ))
Секретные разработки
intmain вне форума Ответить с цитированием
Старый 30.04.2013, 20:03   #17
s-andriano
Старожил
 
Аватар для s-andriano
 
Регистрация: 08.04.2012
Сообщений: 3,229
По умолчанию

Цитата:
Сообщение от intmain Посмотреть сообщение
С чего вы взяли? Очень даже наоборот.
Я изо всех сил пытаюсь связать и понять при чем тут строки битмапа.
При том, что именно в них содержится ответ на Ваш вопрос.
Попытайтесь все-таки дать конкретный ответ (число) на вопрос из 12 поста.
s-andriano вне форума Ответить с цитированием
Старый 30.04.2013, 21:35   #18
intmain
Играюсь с Python
Форумчанин
 
Аватар для intmain
 
Регистрация: 12.12.2012
Сообщений: 340
По умолчанию

Цитата:
Попытайтесь все-таки дать конкретный ответ (число) на вопрос из 12 поста.
тогда скажите ширину вашего рисунка. я подставлю её в
bmp_pixel24* FirstPixelInLine = (bmp_pixel24*) (image.data + ( image.width * 3 ) * NeededLine);

*image.data = 1.
*NeededLine = 2
*возможно еще придется учесть что рисунок бмп храниться ж.. на перед, но это так по ходу дела.
Что ел то - в долг, что жил то - зря.
Для избранных. ))
Секретные разработки
intmain вне форума Ответить с цитированием
Старый 01.05.2013, 11:26   #19
s-andriano
Старожил
 
Аватар для s-andriano
 
Регистрация: 08.04.2012
Сообщений: 3,229
По умолчанию

Цитата:
Сообщение от intmain Посмотреть сообщение
тогда скажите ширину вашего рисунка.
И после этого Вы утверждаете, что читаете ответы?

Цитирую себя же (тот самый пост №12, на котором уже специально акцентировал внимание):
Цитата:
шириной 3 пикселя
s-andriano вне форума Ответить с цитированием
Старый 01.05.2013, 17:57   #20
intmain
Играюсь с Python
Форумчанин
 
Аватар для intmain
 
Регистрация: 12.12.2012
Сообщений: 340
По умолчанию

Какой олень придумал bmp формат ?
Я понял про какие строки вы мне все говорили.
http://en.wikipedia.org/wiki/BMP_file_format
Pixel storage

Цитата:
По какому смещению от начала данных начинается вторая (считая с единицы) строка 24-разрядного файла шириной 3 пикселя?
offset = 2 * ((24 * 3 + 31) / 32) * 4;
Что ел то - в долг, что жил то - зря.
Для избранных. ))
Секретные разработки
intmain вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вопросы Syltan Общие вопросы C/C++ 2 13.11.2009 19:32
Вопросы по if, else? molodoyy Общие вопросы C/C++ 1 25.10.2008 18:55
вопросы MAcK Win Api 7 21.07.2007 18:08