У нас: 141825 рефератів
Щойно додані Реферати Тор 100
Скористайтеся пошуком, наприклад Реферат        Грубий пошук Точний пошук
Вхід в абонемент


"розвантажена" GPU дозволяє використати зовсім нові, більш складні й точні методи імітації шкіри, прискорення морфінга, генерування тіней й екструзії, дрібних деталей, фізичних й інших ефектів.

От у цьому, по суті, і полягає основний "розлом" між нинішніми поколіннями графіки й "залізом" під Direct3D 10: у той час як Direct3D 9 може працювати з картами епохи Direct7, Direct3D 10 працює тільки з новими поколіннями графічних акселераторів, починаючи з GeForce 8800.

Щодо підтримки OpenGL. Варто відзначити, що Windows Vista надає ту ж підтримку OpenGL, що й Windows XP, для цього буде потрібно інстальований драйвер-клієнт (Installable Client Driver, ICD) під OpenGL від виробника відеокарти. У більшості випадків відсутність нової версії ICD під Windows Vista забезпечить підтримку лише рівня OpenGL v1.1.

Із часів Direct 8.0 до складу Direct входили такі API як:

DirectDraw - 2D растрова графіка

Direct3D - D3D, 3D графіка

DirectInput - обробка дані клавіатури, мишки, джойстика й інших ігрових контролерів

DirectPlay - мережеві комунікації в іграх

DirectSound - запис і відтворення звуку

DirectSound3D - DS3D, 3D звук

DirectMusic - відтворення саундтреків з DirectMusic Producer

DirectSetup - інсталяція компонентів, не реалізованих в API Direct

Direct Media - сполучення DirectAnimation, DirectShow, Direct Video Acceleration, Direct3D Retained Mode й Direct Transform, відповідно, для анімації, відтворення мультимедія й потокові додатки, 3D й інтерактиви

Direct Media Objects - підтримка об'єктів потокової обробки - кодіровщиків, декодерів, ефектів

В Windows Vista реалізована підтримка тих же інтерфейсів Direct3D й DirectDraw, як в Windows XP, починаючи з Direct 3, за винятком режиму Retained Mode в Direct3D. Хіба що можна відзначити обмеження для повноцінних 64-бітних додатків Windows XP Professional x64 Edition, підтримка функцій яких під Windows Vista обмежена Direct3D9, DirectDraw7 і більш новими версіями інтерфейсів.

3. ПРОГРАМУВАННЯ З ВИКОРИСТАННЯМ DIRECTX

3.1 Побудова сцени

Direct містить у собі рівень абстракції - HAL (Hardware Abstraction Layer). За допомогою HAL відбувається взаємодія додатка з устаткуванням комп'ютера, поза залежністю від виготовлювача встаткування. Це дає можливість написаному коду працювати на будь-якому апаратному забезпеченні без внесення параметрів цього встаткування.

Вся бібліотеки DirectX побудована на основ СОМ (Component Object Model). Вам не прийде заглиблюватися в сутність цієї технології, тому що вся робота із СОМ заснований на викликах відповідних функцій. У складі СОМ є API, називана СОМ-бібліотекою; з її допомогою досягається керування всіма компонентами. Кожний із програмних компонентів реалізує певну кількість СОМ-об'єктів, доступ до яких здійснюється за допомогою інтерфейсів, які, у свою чергу складаються з функцій. За допомогою цих функцій і відбувається взаємодія із СОМ-об'єктом.

Перш ніж почати програмувати, потрібно чітко представляти схему побудови сцени.

- Створення віконного додатка. Частина програми взаємодіюча з Windows.

- Ініціалізація Direct3D. Створення інтерфейсів, ініціалізація 3D пристроїв, настроювання програмної й апаратної частини комп'ютера.

- Створення об'єкта. Уведення координат вершин трикутників з яких складається об'єкт, призначення формату вершин для наступної трансформації.

- Висвітлення, призначення матеріалу, накладення текстур. Створення джерел висвітлення й накладення текстур на об'єкти сцени.

- Рендер сцени. Відрисовка всіх об'єктів з урахуванням висвітлення, кута огляду, видимості об'єктів, що падають тіней ... До цього ми тільки вводили параметри всіх складових, а тепер відеокарта робить розрахунок і вивід на екран всієї сцени.

Звичайно, на ці етапи ділити створення тривимірного додатка можна тільки умовно, але все-таки таке розкладання допомагає зрозуміти загалом створення додатка.

3.2 Основні функції для реалізації програми

- IDirect3D9 *Direct3DCreate9(UINT SDKVersion)

Повертає покажчик на інтерфейс IDirect3D9. Функція використовує тільки один макрос D3D_SDK_VERSION, що визначений у заголовному файлі d3d9.h, що вказує на поточну версію SDK. Якщо функція повернула NULL, то очевидно Direct3D не встановлений на комп'ютері користувача.

- HRESULT GetAdapterDisplayMode(UINT Adapter, D3DDISPLAYMODE *pMode)

Повертає поточний режим відображення адаптера.

Adapter - відеоадаптер дисплея, значення D3DADAPTER_DEFAULT використовує завжди первинний адаптер за замовчуванням.

pMode - покажчик на структуру D3DDISPLAYMODE, що містить опис поточного режиму адаптера. Значення, що повертає адаптер. Якщо функція завершена успішно, тоді повертається значення D3D_OK. Якщо Adapter або pMode невірний, тоді повертається значення D3DERR_INVALIDCALL.

- D3DDISPLAYMODE

Опис поточного режиму адаптера

typedef struct _D3DDISPLAYMODE

{

UINT Width; //ширина робочої поверхні екрана в пікселях

UINT Height; //висота робочої поверхні екрана в пікселях

UINT RefreshRate; //частота регенерації, значення 0 - за замовчуванням

D3DFORMAT Format; //формат режиму візуального відображення

} D3DDISPLAYMODE;

- D3DFORMAT

Тип, що перераховує, визначальні типи поверхневих форматів. Повний опис можна переглянути в MSDN, тут розглянуті тільки найбільш використовувані.

Таблиця 3.2.1 - Визначальні типи поверхневих форматів

Прапорець | Значення | Опис

D3DFMT_UNKNOWN | 0 | формат поверхні, використовуваної за замовчуванням

D3DFMT_R8G8B8 | 20 | 24-бітний формат RGB

D3DFMT_A8R8G8B8 | 21 | 32-бітний формат АRGB

D3DFMT_D16_LOCKABLE | 70 | 16-бітний формат буфера глибини

D3DFMT_D32 | 71 | 32-бітний формат буфера глибини

D3DFMT_D15S1 | 73 | 16-бітний формат буфера глибини, де 15 біт – канал глибини, 1 біт – канал трафарету

D3DFMT_D24S8 | 75 | 32-бітний формат буфера глибини, де 24 біта – канал глибини, 8 біт – канал трафарету

D3DFMT_D24X8 | 77 | 32-бітний формат буфера глибини, де 24 біта – резервуються для каналу глибини

D3DFMT_D24X4S4 | 79 | 32-бітний формат буфера глибини, де 24 біта канал глибини, 4 біти – канал трафарету

D3DFMT_D16 | 80 | 16-бітний формат буфера глибини

D3DFMT_VERTEXDATA | 100 | Формат поверхні буфера глибини

D3DFMT_INDEX16 | 101 | 16-бітний індекс буфера глибини

D3DFMT_INDEX32 | 102 | 32-бітний індекс буфера глибини

- typedef struct _D3DPRESENT_PARAMETERS_

UINT BackBufferWidth;

UINT BackBufferHeight;

D3DFORMAT BackBufferFormat;

UINT BackBufferCount;

D3DMULTISAMPLE_TYPE MultiSampleType;

D3DSWAPEFFECT SwapEffect;

HWND hDeviceWindow;

BOOL Windowed;

BOOL EnableAutoDepthStencil;

D3DFORMAT AutoDepthStencilFormat;

DWORD Flags;

UINT FullScreen_RefreshRateInHz;

UINT FullScreen_PresentationInterval;

} D3DPRESENT_PARAMETERS;

Опис параметрів.

BackBufferWidth й BackBufferHeight - ширина й висота нових задніх буферів, у пікселях. Якщо


Сторінки: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20