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

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

Теперь будем пробовать создавать девайсы. Схема наших действий такова: 1. Пробуем создать TnLHal девайс. Если проваливаем - идем на п.2, иначе идем на п.4. 2. Пробуем создать HAL девайс. Если проваливаем - идем на п.3, иначе идем на п.4. 3. Пробуем создать RGB девайс. Если проваливаем - сообщаем об ошибке и выходим. 4. Продолжаем... Из-за этой схемы действий кусок создания девайсов будет выглядеть довольно забавно, но это в листинге. После этого надо создать вупорт - ViewPort. Это обыкновенный прямоугольник, в котором будет видно зарендеренное изображение. Описывается он структурой D3DVIEWPORT7. Создай переменную этого типа, например, vp. Присвой ей значение {0, 0, 1280, 1024, 0.0f, 1.0f}. Первые две цифры - координаты левого верхнего угла, вторые - правого нижнего. Последние - координаты по Z (на хрен не нужны). Чтобы применить эти значения, надо вызвать метод SetViewport интерфейса IDirect3DDevice7 (теперь под методами ты будешь понимать методы именно этого интерфейса - дальше пойдут только они (за небольшим исключением - будет специально оговорено), единственным параметром которого будет указатель на этот самый D3DVIEWPORT (то есть мы впишем туда &vp). Теперь любуйся листингом.

Листинг №5 - main.cpp, инициализация 3D девайсов

hr = lpD3D->CreateDevice (IID_IDirect3DTnLHalDevice, //Полная акселерация

lpBB,

&lpD3DD);

if(FAILED(hr)) //Проверка на ошибки

{

hr = lpD3D->CreateDevice (IID_IDirect3DHALDevice,

lpBB,

&lpD3DD); //По возможности акселим

if(FAILED(hr))

{

hr = lpD3D->CreateDevice (IID_IDirect3DRGBDevice,

lpBB,

&lpD3DD); // Software Rendering

if(FAILED(hr)) return hr;

}

}

D3DVIEWPORT7 vp = { 0, 0, 1280, 1024, 0.0f, 1.0f };

hr = lpD3DD->SetViewport(&vp); //Создаем так называемый ViewPort -

прямоугольник на серфайсе, в который будем рисовать

if(FAILED(hr))

return hr;

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

Теперь надо создать вершины нашего полигона и записать их в vtx уже рендереспособными. Все эти цифры я взял от балды - они не имеют никакого принципиального смысла. И замечу, что в присваивании значений второй половины массива нарушен порядок - это все проделки паршивого задания вершин по часовой стрелке. В общем - зри в листинг.

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

загрузка...
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