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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 16.07.2010, 23:29   #41
Ulex
Непрофессионал
Участник клуба
 
Аватар для Ulex
 
Регистрация: 01.01.2008
Сообщений: 1,432
По умолчанию

Вот какая няшка получилась. Потестите кому не лень мой загрузчик PNG.
Пока только из внешнего файла testPNG.png.
Особенно интересуют тесты на WIN системах, на которых никогда не стоял IE (если такие вообще существуют). Обычный снос explorera работоспособность программы не поломал (и это странно).

Ах да, ещё интересно как себя поведёт загрузчик на больших картинках (в пределах разрешения монитора). Ибо я не уверен, что засинхронизировался правильно.
Вложения
Тип файла: rar TestPNG.rar (84.0 Кб, 21 просмотров)
И чем больше я узнавал людей, тем больше мне нравились компьютеры.
------------------------------------
Страничка с моими программками http://ulex-masm.ru

Последний раз редактировалось Ulex; 16.07.2010 в 23:37.
Ulex вне форума Ответить с цитированием
Старый 17.07.2010, 10:10   #42
Гром
Старожил
 
Аватар для Гром
 
Регистрация: 21.03.2009
Сообщений: 2,193
По умолчанию

Win7, IE стоит. Большие картинки открылись нормально (раскопал здесь и здесь). Первая по высоте вышла за пределы монитора (широкоформатник), вторая вписалась. Никаких багов не замечено.
Простые и красивые программы - коды программ + учебник C++
Создание игры - взгляд изнутри - сайт проекта
Тема на форуме, посвященная ему же
Гром вне форума Ответить с цитированием
Старый 17.07.2010, 11:09   #43
Somebody
Участник клуба
 
Регистрация: 08.10.2007
Сообщений: 1,185
По умолчанию

У меня вообще не работает, даже с той картинкой, которая с ним. "Ошибка загрузки png" - и всё. IE8.
Somebody вне форума Ответить с цитированием
Старый 17.07.2010, 18:17   #44
DomiNick
Студент, не
Старожил
 
Аватар для DomiNick
 
Регистрация: 29.01.2009
Сообщений: 2,067
Лампочка

Цитата:
Сваливается на вызове функции. Уходит по английски, даже нулевой hBitmap не возвращает.
Странно... У меня возвращает всегда... Может я с этим PChar что-то не так сделал?
Вообще должен быть полный путь, но Делфи и относительный нормально воспринимает...
Цитата:
должен быть создан с такими параметрами
Хм... Какой функцией-то создаёте (на всякий случай) - CreateDIBSection?
Цитата:
чтобы функция в случае аварии могла вернуть какое-нибудь неадекватное значение
DialogBox подойдёт?
Цитата:
TestPNG.rar
Вам удалось найти что-то встроенное в винду для загрузки из png?
А она автономная? Может её просто в ресурсах программы носить?

Значить моя уже не нужна...
I am the First of Cyber Evolution...
I am the First to Program your Future...
DomiNick вне форума Ответить с цитированием
Старый 17.07.2010, 18:51   #45
Ulex
Непрофессионал
Участник клуба
 
Аватар для Ulex
 
Регистрация: 01.01.2008
Сообщений: 1,432
По умолчанию

Цитата:
У меня вообще не работает, даже с той картинкой, которая с ним. "Ошибка загрузки png" - и всё. IE8.
Цитата:
Win7, IE стоит. Большие картинки открылись нормально (раскопал здесь и здесь). Первая по высоте вышла за пределы монитора (широкоформатник), вторая вписалась. Никаких багов не замечено.
Ну вот, примерно этого и ожидал. Работает не на всех машинах.
Жалько. А почти получилось.

Цитата:
Хм... Какой функцией-то создаёте (на всякий случай) - CreateDIBSection?
Ага, ей.
Цитата:
DialogBox подойдёт?
Да не, лучше пусть она просто возвращает (0 или -1). Dialog Box иногда может мешаться. Кстати, можете ещё для теста добавить в библиотеку пустую функцию, которая бы возвращала какое-нибудь фиксированное значение (это мне, для проверки загрузчика).

Цитата:
Вам удалось найти что-то встроенное в винду для загрузки из png?
Как бы не совсем. Интерфейс IImgCtx он, в принципе, не системный.
Хотя, почему не работает на машинах, где стоит IE - не понятно.
Интерфейс то вроде оттуда - из эксплорера.
И чем больше я узнавал людей, тем больше мне нравились компьютеры.
------------------------------------
Страничка с моими программками http://ulex-masm.ru
Ulex вне форума Ответить с цитированием
Старый 18.07.2010, 03:55   #46
DomiNick
Студент, не
Старожил
 
Аватар для DomiNick
 
Регистрация: 29.01.2009
Сообщений: 2,067
Лампочка

Цитата:
Сам DIB должен быть создан с такими параметрами:
DIB_DRAW.pbmi.bmiHeader.biPlanes = 1
DIB_DRAW.pbmi.bmiHeader.biBitCount = 32
DIB_DRAW.pbmi.bmiHeader.biCompressi on = BI_RGB
Сделал... Хм... А остальные параметры (на всякий случай)?
Сделать чтоб создавало прям точно такую структуру или просто HBITMAP возвращать? А то просто не уверен как оно сочтётся с MASM'ом...

Следующая версия

Код:
Function Result_Byte_0: Byte; External 'LoadPNG_0_03.dll';
Function Result_Byte_0_Stdcall: Byte; Stdcall; External 'LoadPNG_0_03.dll';
Function Result_Byte_10: Byte; External 'LoadPNG_0_03.dll';
Function Result_Byte_10_Stdcall: Byte; Stdcall; External 'LoadPNG_0_03.dll';
Function Result_HBITMAP_0: HBITMAP; External 'LoadPNG_0_03.dll';
Function Result_HBITMAP_0_Stdcall: HBITMAP; Stdcall; External 'LoadPNG_0_03.dll';
Function Load_PNG_to_32bit_HBITMAP_with_DIB_section(FileName: PChar; ShowWarrings: BooLean): HBITMAP; Stdcall; External 'LoadPNG_0_03.dll';
Первые для тестов (есть варианты с Stdcall и без - мало ли), в основной же ряд изменений:
  • Избавился от TBitmap;
  • Делаю DIB-секцию (32-битную!);
  • Новый параметр: если ShowWarrings=True, то выводятся информирующие сообщения;
  • Могут быть неведомые баги при попытке загрузить не 24/32-хбитные png...

З.Ы. После некоторых изменений функции стало без разницы есть ли Stdcall или нет - в том смысле что и так и так работает (не знаю что за баг получался в первый раз)...
Поэтому пусть лучше будет с Stdcall...
I am the First of Cyber Evolution...
I am the First to Program your Future...
DomiNick вне форума Ответить с цитированием
Старый 18.07.2010, 20:41   #47
Ulex
Непрофессионал
Участник клуба
 
Аватар для Ulex
 
Регистрация: 01.01.2008
Сообщений: 1,432
По умолчанию

Цитата:
Сделать чтоб создавало прям точно такую структуру или просто HBITMAP возвращать?
Давай по ссылке. Т.е. я в функцию отдаю адрес строки с именем файла и адрес пустой структуры DIB_DRAW. А функа мне её заполняет.

Цитата:
А остальные параметры (на всякий случай)?
вот примерчик как я DIB секцию делаю:

Код:
InitDIBitmap	proc uses ebx edi esi, hDC_EXT:DWORD, StructOUT:DWORD, SizeX:DWORD, SizeY:DWORD, hBitmapLoad:DWORD

	mov	edi, [StructOUT]
	mov	[edi].DIB_DRAW.pbmi.bmiHeader.biSize, SIZEOF BITMAPINFOHEADER	
	mov	eax, [SizeX]
	mov	[edi].DIB_DRAW.pbmi.bmiHeader.biWidth, eax
	mov	eax, [SizeY]
	mov	[edi].DIB_DRAW.pbmi.bmiHeader.biHeight, eax
	mov	[edi].DIB_DRAW.pbmi.bmiHeader.biPlanes, 1
	mov	[edi].DIB_DRAW.pbmi.bmiHeader.biBitCount, 32
	mov	[edi].DIB_DRAW.pbmi.bmiHeader.biCompression, BI_RGB
	mov	[edi].DIB_DRAW.pbmi.bmiHeader.biSizeImage, 0
	mov	[edi].DIB_DRAW.pbmi.bmiHeader.biXPelsPerMeter, 0
	mov	[edi].DIB_DRAW.pbmi.bmiHeader.biYPelsPerMeter, 0
	mov	[edi].DIB_DRAW.pbmi.bmiHeader.biClrUsed, 0
	mov	[edi].DIB_DRAW.pbmi.bmiHeader.biClrImportant, 0
	mov	[edi].DIB_DRAW.pbmi.bmiColors, 0000FFFFFFh

	invoke	CreateDIBSection, [hDC_EXT], addr [edi].DIB_DRAW.pbmi, DIB_RGB_COLORS, addr [edi].DIB_DRAW.pBits, 0, 0
	mov	[edi].DIB_DRAW.hDIBDraw, eax

	cmp	[hBitmapLoad], 0
	je	InitDIBitmapEnd
	invoke	GetDIBits, [hDC_EXT], [hBitmapLoad], 0, [edi].DIB_DRAW.pbmi.bmiHeader.biHeight, [edi].DIB_DRAW.pBits, \
		addr [edi].DIB_DRAW.pbmi, DIB_RGB_COLORS
InitDIBitmapEnd:
	xor	eax, eax
	ret
InitDIBitmap	endp
И чем больше я узнавал людей, тем больше мне нравились компьютеры.
------------------------------------
Страничка с моими программками http://ulex-masm.ru
Ulex вне форума Ответить с цитированием
Старый 27.07.2010, 00:47   #48
Ulex
Непрофессионал
Участник клуба
 
Аватар для Ulex
 
Регистрация: 01.01.2008
Сообщений: 1,432
По умолчанию

Вобщем библиотека заработала. Почти.
Есть проблема одна, для меня пока совсем непонятная.
PNG грузятся (на моей системе и ч.з. библиотечку и ч.з. IImgCtx), но я не могу установить цветовой ключ для DIB_а, загруженного ч.з. библиотеку LoadPNG_0_03.dll. Такое впечатление, что при загрузке картинки у неё поплыли куда-то цвета и теперь мой ключ просто перестал попадать в цвет фона. Для опытов сделал программку, где грузится одна и та же PNG-ка двумя разными методами (ч.з. IImgCtx и ч.з. LoadPNG_0_03.dll), затем устанавливается одинаковый цветовой ключ (004783a8h) для обеих поверхностей и рисую (слева-направо LoadPNG_0_03.dll-IImgCtx). И у меня первая рисуется без ключа, а вторая нормально. В чём причина непонятно.
Кстати, попробовал запустить этот тест на Win7 - обе поверхности потеряли цветовые ключи. Совсем перестал что-либо понимать.
Вложения
Тип файла: rar test.rar (108.0 Кб, 12 просмотров)
И чем больше я узнавал людей, тем больше мне нравились компьютеры.
------------------------------------
Страничка с моими программками http://ulex-masm.ru
Ulex вне форума Ответить с цитированием
Старый 27.07.2010, 08:32   #49
Вадим Буренков
Участник клуба
 
Аватар для Вадим Буренков
 
Регистрация: 06.03.2009
Сообщений: 1,346
По умолчанию

У меня AVG нашел в примере вирус:
Изображения
Тип файла: jpg Virus.JPG (35.3 Кб, 106 просмотров)
Вадим Буренков вне форума Ответить с цитированием
Старый 27.07.2010, 17:04   #50
Ulex
Непрофессионал
Участник клуба
 
Аватар для Ulex
 
Регистрация: 01.01.2008
Сообщений: 1,432
По умолчанию

Цитата:
У меня AVG нашел в примере вирус:
Приплыли
Вообще иногда антивирусники реагировали как то неадекватно на мои программы. Решалось это всегда забиванием пары-тройки нопов в прогу. Так что обычно это не проблема моих программ - это обычно проблема антивирусников. Они почему-то решают, что этот код является вредоносным. Может быть эвристика так работает - не знаю.
И чем больше я узнавал людей, тем больше мне нравились компьютеры.
------------------------------------
Страничка с моими программками http://ulex-masm.ru
Ulex вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как обойти "преобразование типа из "string" в "float" невозможно" lexluter1988 Помощь студентам 1 07.08.2010 12:23
при вводе на листе "магазин"- код товара появлялось "описание" товара из "склада" с "продажной ценой" aleksei78 Microsoft Office Excel 13 25.08.2009 12:04
Игра "Ghost Recon Advanced Warfighter 1"(GRAW) Air Gamedev - cоздание игр: Unity, OpenGL, DirectX 0 27.07.2008 08:07
Игра "четный" "нечетный" bigcat Помощь студентам 1 01.03.2008 00:24