![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Вот такая проблема...
VEG © (2003-04-05 20:12:00)
Есть один файл, где одна за другой записаны картинки. Как загрузить их всех по-порядку в поверхности ф-ией D3DXLoadTextureFromMemory??? Может как-то через файловый поток??? Если надо, то моя программа знает, где начинается и заканчивается каждая картинка. Только нужно обязательно без сохранения картинок перед этим на диск!!!
cyborg (2003-04-06 13:04:00) [1]
Неразбериха потому, что я не весь код программы выложил.
Здесь как раз грузится в поверхность DirectDraw7, Surface называется она тут. Вначале её нужно заблокировать - Lock, при этом desc.lpSurface^ станет указывать на память поверхности и туда грузи данные своей картинки.
Насчёт 3Д помочь не могу, по поводу колоркея, нужно в параметре вывода указывать, что нужно использовать колоркей, там типа srccolorkey параметр, точно не помню.
VEG (2003-04-06 12:12:00) [2]Брр... Неразбериха какая-то... С параметрами... Со всем!!! Я юзаю IDirectDrawSurface7 для хранения картинки. Картинки загружаю двух форматов: TGA (32bit alpha, 24bit) & BMP (16bit, 24 bit). Вывожу на экран функцией D3DXDrawSpriteTransform. Мини-примерчик можно???
Еще один фопрос. Тут лежит Microsoft-овская демка по D3DX: http://140.131.13.205/LHU_EL_Teacher/el049/DirectX/DX7ASDK/DXF/samples/multimedia/d3dx/src/sprite/Работает нормально. Но мне нужно выводить картинку с включенным ColorKey. Я подключил заголовокddutills.h. В функцию HRESULT CSpriteApp::InitRenderer() послеhr = D3DXCreateTextureFromFile()я дописал такую строку:hr = DDSetColorKey(m_ptex, D3DRGB(0,0,0)); if (FAILED(hr)) return hr;. Компилиться нормально, но ключ не работает!!! Почему??? Как исправить???
cyborg (2003-04-05 23:53:00) [3]
У меня так грузятся картинки из файла данных:
VAR
desc : TDDSURFACEDESC2;
ddsd : TDDSurfaceDesc2;
hRet : Cardinal;
...
FillChar(ddsd,SizeOf(ddsd),0);
desc.dwSize:=SizeOf(desc);
hRet := Surface.Lock(nil, desc, DDLOCK_WAIT, 0);
Seek(DataFile,Offs);
BlockRead(DataFile,desc.lpSurface^,Size);
hRet:=Surface.Unlock(nil);
...
Грузит прямо в поверхность, только соблюдай разрядность поверхности и графических данных.