Суровая правда жизни о Direct3D

Спецвыпуск Хакер, номер #004, стр. 004-098-5

Листинг №4 - Main.cpp, инициализация серфайсов.

hr = lpDD->SetCooperativeLevel(hWnd , DDSCL_EXCLUSIVE | DDSCL_FULLSCREEN | DDSCL_ALLOWREBOOT);

//Важный момент. Устанавливаем параметры DirectDraw'а:

//Эксклюзивный полноэкранный режим

//Разрешить комбинацию Ctrl+Alt+Del (Если вдруг повиснет)

if(FAILED(hr))

return hr;

hr = lpDD->SetDisplayMode(1280, 1024, 16, 0, 0); //Режим экрана 1280х1024, глубина цвета 16 бит

if(FAILED(hr))

return hr;

//Создаем "поверхности" экрана и буфера

DDSURFACEDESC2 ddsd2;

ZeroMemory(&ddsd2, sizeof(DDSURFACEDESC2));

ddsd2.dwSize = sizeof(ddsd2);

ddsd2.dwFlags = DDSD_CAPS | DDSD_BACKBUFFERCOUNT; //Естьвнеэкранные буферы, есть доп. параметры

ddsd2.ddsCaps.dwCaps = DDSCAPS_COMPLEX | DDSCAPS_FLIP |DDSCAPS_PRIMARYSURFACE | DDSCAPS_3DDEVICE;

//Поверхность не одна в цепочке (двойная буферизация), разрешаем метод flip

//Это - экранная главная поверхность, на ней рисует Direct3D устройство

ddsd2.dwBackBufferCount = 1; // 1 внеэкранный буфер

hr = lpDD->CreateSurface(&ddsd2, &lpM, NULL); //Создание поверхности

if(FAILED(hr))

return hr;

//СОздаем внеэкранный буфер

DDSCAPS2 ddscaps = { DDSCAPS_BACKBUFFER | DDSCAPS_3DDEVICE | DDSCAPS_FLIP, 0, 0, 0 };

hr = lpM->GetAttachedSurface(&ddscaps,

&lpBB); //Подключаем к главной поверхности

if(FAILED(hr))

return hr;

Конец листинга 4.

Здесь самое место (и нигде более) создать D3D девайс. Делается это методом CreateDevice интерфейса IDirect3D7, первым параметром которого является гид создаваемого девайса, он может быть одним из указанных: IID_IDirect3DTnLHalDevice, IID_IDirect3DHALDevice, IID_IDirect3DRGBDevice (первый работает, если на компе стоит новый девайс, поддерживающий все 3D фичи. Второй - если аксель держит только часть возможностей. Третий - если акселя принципиально нет). Так как я опять же не знаю, какой у тебя девайс, тут придется перепробовать все: от TnLHal до RGB. Вторым параметром - серфайса, на которую мы будем рендерить (оной будет внеэкранный буфер - lpBB). Третьим - указатель на интерфейс создаваемого девайса.

Назад на стр. 004-098-4  Содержание  Вперед на стр. 004-098-6

загрузка...
Cпец Хакер #075Cпец Хакер #074Cпец Хакер #073Cпец Хакер #072Cпец Хакер #071Cпец Хакер #070Cпец Хакер #069Cпец Хакер #068Cпец Хакер #067Cпец Хакер #066Cпец Хакер #065Cпец Хакер #064Cпец Хакер #063Cпец Хакер #062Cпец Хакер #061Cпец Хакер #060Cпец Хакер #059Cпец Хакер #058Cпец Хакер #057Cпец Хакер #056Cпец Хакер #055Cпец Хакер #054Cпец Хакер #053Cпец Хакер #052Cпец Хакер #051Cпец Хакер #050Cпец Хакер #049Cпец Хакер #048Cпец Хакер #047Cпец Хакер #046Cпец Хакер #045Cпец Хакер #044Cпец Хакер #043Cпец Хакер #042Cпец Хакер #041Cпец Хакер #040Cпец Хакер #039Cпец Хакер #038Cпец Хакер #037Cпец Хакер #036Cпец Хакер #035Cпец Хакер #034Cпец Хакер #033Cпец Хакер #032Cпец Хакер #031Cпец Хакер #030Cпец Хакер #029Cпец Хакер #028Cпец Хакер #027Cпец Хакер #026Cпец Хакер #025Cпец Хакер #024Cпец Хакер #023Cпец Хакер #022Cпец Хакер #021Cпец Хакер #020Cпец Хакер #019Cпец Хакер #018Cпец Хакер #017Cпец Хакер #016Cпец Хакер #015Cпец Хакер #014Cпец Хакер #013Cпец Хакер #012Cпец Хакер #011Cпец Хакер #010Cпец Хакер #009Cпец Хакер #008Cпец Хакер #007Cпец Хакер #006Cпец Хакер #005Cпец Хакер #004Cпец Хакер #003Cпец Хакер #002Cпец Хакер #001