· Начало · Отвђтить · Статистика · Поиск · FAQ · Правила · Установки · Язык · Выход · WASM.RU · Noir.Ru ·

 WASM Phorum —› WASM.DIRECTX.OPENGL —› Загрузка изображений через интерфейс IPicture

Посл.отвђт Сообщенiе


Дата: Июл 14, 2004 22:11:46

41 урок Nehe. Возможно вопрос глупый, но я в упор не могу понять в чем же дело...
Вроде пишу все так как надо, но не работает:((
Кто-нибудь делал? Может у кого-нибудь есть исходник, чтобы где поразбираться было?
А то в своем я уже запарился ковыряться...

Вот часть где грузим картинку...
==================
invoke MultiByteToWideChar, CP_ACP, 0, szPath, -1,addr wszPath, sizeof wszPath
invoke OleLoadPicturePath, ADDR wszPath, 0, 0, 0, ADDR IID_IPicture, ADDR hPicture
invoke GetDC,0
invoke CreateCompatibleDC, eax
mov hDC2, eax
invoke glGetIntegerv,GL_MAX_TEXTURE_SIZE, addr MaxTexDim

Далее переводим ширину и высоту загруженной картинки в пиксели и подгоняем,
чтобы ширина и высота стали кратными ближайшей степени двойки.

;(bInfo BITMAPINFO <>)
mov bInfo.bmiHeader.biSize, sizeof BITMAPINFOHEADER
mov bInfo.bmiHeader.biBitCount, 32
m2m bInfo.bmiHeader.biWidth ,TextureAtr.x ;ширина и высота будующей текстуры
m2m bInfo.bmiHeader.biHeight,TextureAtr.y
mov bInfo.bmiHeader.biCompression,BI_RGB
mov bInfo.bmiHeader.biPlanes, 1

invoke CreateDIBSection ,hDC2, addr bInfo, DIB_RGB_COLORS,addr pbv, 0, 0
mov hBmp,eax
invoke SelectObject,hDC2, eax

mov ebx, PicsAtr.y ;высота картинки
xor ebx, 11111111111111111111111111111111b
inc ebx
comcall IPicture.Render, hPicture, eax, hDC2, 0, 0, TextureAtr.x, TextureAtr.y, 0,PicsAtr.y , PicsAtr.x, ebx, 0

;тут надо преобразовать из BGR в RGB

invoke glGenTextures,1, addr texid
invoke glBindTexture,GL_TEXTURE_2D, texid
invoke glTexParameteri,GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_LINEAR
invoke glTexParameteri,GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_LINEAR
invoke glTexImage2D,GL_TEXTURE_2D, 0, 3, TextureAtr.x, TextureAtr.y, 0, GL_RGBA, GL_UNSIGNED_BYTE, pbv

Далее удаляем все что не нужно...

После всего этого вроде как происходит попытка наложить чего-то, но это что-то напоминает
маленький кусочек выдранный из картинки и растянутый...
Может кто-нибудь подскажет где тут неправильно? Или исходник скинет...


Дата: Июл 15, 2004 00:15:43

А почему
xor ebx, 11111111111111111111111111111111b 
inc ebx

А не
neg ebx


Дата: Июл 15, 2004 00:27:21

А разница большая?
Подсказать почему не функционирует можешь?


Дата: Июл 15, 2004 01:08:52

41 урок вроде volumetric fog.
имхо, не париться лучше, а свзяка:
CreateFile
ReadFile
CloseFile
или
CreateFile
CreateFileMapping
MapViewOfFile
...
для bmp вполне хватает


Дата: Июл 15, 2004 01:22:56

Могу только выложить работающий исходник. Но там выводится на DC и OpenGL не используется


Дата: Июл 15, 2004 01:26:49

Да 41 - это туман, но там часть про загрузку текстур...
Так в том-то и дело, что хотелось бы не только BMP грузить...
Вообще все вроде работает, но текстура не ложиться:((
Картинка грузиться, размеры беруться. В пиксели правильно
переводится. Ближайшая степень двойки расчитывается правильно. CreateDIBSection вроде без ошибок...
Тогда в чем же дело?????


Дата: Июл 15, 2004 01:33:08

На DC и я выводил и все работало:((
Но выложи свой исходник на всякий случай, может чего-нибудь там увижу, что не замечаю у себя...
А про xor inc == neg - это у меня просто привычка писать простыми командами, которыми часто пользуюсь...
Ведь разницы все равно большой думаю нет.


Дата: Июл 15, 2004 01:45:53


Дата: Июл 15, 2004 14:44:33

Loger
Спасибо. Только пример отказался запускаться... Но главное исходники. У меня вроде чуть-чуть не так было сделано...

jekyll
„имхо, не париться лучше, а свзяка:
CreateFile
ReadFile
CloseFile “

Может вышлешь такой исходник? А я попытаюсь покопаться в нем, в своих, и в том что прислал Loger, может все-таки удасться понять в чем дело и дописать эту ерунду(уже какой день вожусь, ум за разум заходит просто, иначе бы сюда не написал)...


Дата: Июл 15, 2004 22:59:58

sds
В моём исходнике убери флаг GMEM_DISCARDABLE в вызове GlobalAlloc.


Дата: Июл 16, 2004 15:00:10

Loger
Понятно. Я грузил JPEG из файла даже IStream вроде не использовал, да и без Render по-моему все работало...
Так что можно по-другому переписать...

jekyll
Столько бился с IPicture, решил попробовать как ты говорил через CreateFile,ReadFile,CloseFile (на мой взгляд лучше чем второй вариант), так за пять минут все написал:)) Текстуры прекрасно грузятся, все очень-очень просто... Но я так и не понял ПОЧЕМУ через IPicture не сработало:((((( Потом как-нибудь еще поразбираюсь попозже... Если кто-то поймет в чем дело, пожалуйста дайте знать...


Powered by miniBB 1.6 © 2001-2002
Время загрузки страницы (сек.): 0.105