Модераторы: Rickert, Alexeis, BorisVorontsov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Загрузка изображения DirectX 
:(
    Опции темы
MrZarkon
Дата 3.3.2012, 23:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 1
Регистрация: 3.3.2012

Репутация: нет
Всего: нет



Проблема такая.Есть функция загрузки изображения

Код

IDirectDrawSurface7 *LoadBMPToSurface(LPCTSTR filename , IDirectDraw7 *ppiDD)
{
 IDirectDrawSurface7 *surf;
 HANDLE hBmp;
 BITMAP bm;

 //загрузка картинки из файла
 hBmp = LoadImage(0 , filename , IMAGE_BITMAP , 0 , 0 , LR_LOADFROMFILE | LR_CREATEDIBSECTION);
 if(hBmp == 0)
 return 0;
 GetObject(hBmp , sizeof(bm) , &bm);
 DDSURFACEDESC2 desc;
 ZeroMemory(&desc , sizeof(desc));
 desc.dwSize = sizeof(desc);
 desc.dwFlags = DDSD_WIDTH | DDSD_HEIGHT | DDSD_CAPS;
 desc.dwWidth = bm.bmWidth;
 desc.dwHeight = bm.bmHeight;
 desc.ddsCaps.dwCaps = DDSCAPS_OFFSCREENPLAIN | DDSCAPS_SYSTEMMEMORY;

 //создание поверхности
 HRESULT r = ppiDD->CreateSurface(&desc , &surf , 0);
 if(r != DD_OK)
 return 0;

 //картинку на поверхность
 HDC hdcImage;
 hdcImage = CreateCompatibleDC(0);
 if(hdcImage == 0)
 return 0;
 SelectObject(hdcImage , hBmp);

 HDC hdc;
 surf->GetDC(&hdc);
 StretchBlt(hdc , 0 , 0 , bm.bmWidth , bm.bmHeight , hdcImage , 0 , 0 , bm.bmWidth , bm.bmHeight , SRCCOPY);
 surf->ReleaseDC(hdc);

 DeleteDC(hdcImage);
 DeleteObject(hBmp);
 return surf;
}


Я ее перепроверил,даже брал с готового,рабочего примера,они одинаковые.И есть код отображения

Код


case WM_PAINT:
 hdc = BeginPaint(hWnd , &ps);
 BOOL Windowed = FALSE;
 if((imagesurf != NULL) && (!Windowed))
 {
 MessageBox(hWnd , "Изображение успешно загружено" , "ОК" , MB_OK);
 RECT dst;
 dst.top = 0;
 dst.left = 0;
 dst.right = iWidth;
 dst.bottom  = iHeight;

 DDBLTFX bltfx;
 ZeroMemory(&bltfx , sizeof(bltfx));
 bltfx.dwSize = sizeof(bltfx);


 backsurf->BltFast(0 , 0 , imagesurf , NULL , DDBLTFAST_WAIT);
 primsurf->Flip(NULL , DDFLIP_WAIT);
 }
 else
 MessageBox(hWnd , "Не удалось загрузить изображение!" , "Ошибка" , MB_OK|MB_ICONERROR);

 EndPaint(hWnd , &ps);
 break;



Ошибка находится в переменной imagesurf,видимо она остается пустой.Но есть код

Код

  if(DXDDInit(&ppiDD , &primsurf , &backsurf , hWnd ,  iWidth , iHeight , 16, FALSE) != S_OK)
  {
  return FALSE;
  }
  imagesurf = LoadBMPToSurface("BG.bmp" , ppiDD);

  ShowWindow(hWnd,nCmdShow);
  UpdateWindow(hWnd);
  MSG msg;



Помогите плиз найти ошибку
PM MAIL   Вверх
BorisVorontsov
Дата 6.3.2012, 13:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Thinker
**


Профиль
Группа: Комодератор
Сообщений: 714
Регистрация: 3.11.2005
Где: Молдавия, г. Киши нёв

Репутация: 1
Всего: 10



Пошагово проходил?


--------------------
[code=cpp]
const char *out = "|*0>78-,+<|"; size_t cc = char_traits<char>::length(out);
for (size_t i=0;i<cc;i++){cout<<static_cast<char>((out[i]^89));}cout<<endl;
[/code]
PM MAIL ICQ GTalk   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Вы можете найти полезным что...
Alexeis
Rickert
  • Английская документация по DirectX лежит где-то здесь.
  • Английская документация по OpenGL лежит где-то там.
  • Гейм-дев у нас обсуждают где-то тут

Ждём вас! С уважением, Alexeis, Rickert.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Мультимедия, OpenGL/DirectX | Следующая тема »


 




[ Время генерации скрипта: 0.0388 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.