{
//D3DCREATE_MIX ED_VERTEXPROCESSINGD3DCREATE_S0FTWARE_VERTEXPR0CESSING if( FILEDC D3D->CreateDevice( D3DADAPTER_DEFAULT. D3DDEVTYPE_REF,hWnd.
D3DCREATEJ0FTWARE_VERTEXPR0CESSING.&d3dpp.&Device)))
return E_FAIL; }
GetClientRect(hWnd.(RECT *)&VP); // VP.Width - VP.Width/4;
Device->SetViewport(&VP); //Задали область просмотра с размером окна return S_0K;
}
d3dpp.BackBufferFormat - D3DFMTJJNKN0WN; //Устанавливается формат текущего рабочего стола.
d3dpp. BackBufferCount - 1;
d3dpp.ЕлаЫeAutoDepthStenci1 - TRUE;
d3dpp.AutoDepthStencilFormat - D3DFMT_D16; //Пытаемся создать D3DDevice с аппаратным ускорением графических операций
if( FAILED(D3D->CreateDevice(D3DADAPTER_DEFAULT. D3DDEVTYPE_HAL. hWnd.
D3DCREATE_S0FTWARE_VERTEXPR0CESSING.&d3dpp. SDevice)))
{
if( FAILEDC// Если не получается - без аппаратного ускорения: D3D->CreateDevice(
D3DADAPTER_DEFAULT. D3DDEVTYPE_REF. hWnd.
D3DCREATE_S0FTWARE_VERTEXPR0CESSING.&d3dpp. SDevice))) return E_FAIL;
}
GetClientRect(hWnd.(RECT *)&VP);
Device->SetViewport(&VP): //Задаем область просмотра, return S_0K; }
В файле объявлены два указателя на интерфейсы. Единственная глобальная функция библиотеки Di rect3DCreate9( ) используется для создания объекта Di rect3D9 и получения доступа к интерфейсу IDirect3d9 этого объекта. При знакомстве с СОМ-технологией было показано, что получение скалярного результата от СОМ-объекта, используемого как отдельный модуль, выглядит несколько громоздко. Поэтому в DirectX не требуется использовать вызов CoCreatelnstanceO. Он спрятан в Di rect3DCreate9( ) и в методе CreateDeviceC ) интерфейса IDi rect3d9.
Указатель LPDIRECT3D9 D3D используется для получения указателя Device на интерфейс IDi rert3DDevice9. При помощи этого интерфейса разработчик может получить доступ к методам создания поверхностей рисования, настройки конвейера и вывода примитивов.
Константа D3DSWAPEFFECT_C0PY задает эффект копирования при смене страниц. Справочная система говорит, что надо задавать значение D3DSWAPЕFFECT_DISCARD, чтобы установить наиболее эффективный метод смены страниц. Но непонятно, что можно предложить в оконном режиме, кроме копирования.