GSP1 2008-2009 Labo 01 Direct3D Foundations. Vooraf • Software: – Visual studio 2005 of/en 2008...

Post on 24-May-2015

215 views 0 download

Transcript of GSP1 2008-2009 Labo 01 Direct3D Foundations. Vooraf • Software: – Visual studio 2005 of/en 2008...

GSP1 2008-2009

Labo 01Direct3D Foundations

Vooraf

• Software:– Visual studio 2005 of/en 2008 met MSDN– DirectX SDK aug 2008 release (verschillende

tegelijk mogelijk)– Nvidia PhysX systemsoftware en sdk– Boek

Vooraf: DirectX SDK

• Controleer deze settings:

Vooraf: DirectX SDK

• Controleer deze settings:

Vooraf: DirectX SDK

• Controleer deze settings:

Vooraf: DirectX SDK

Vooraf: DirectX SDK : Control PanelSteeds in Debug mode werken:• Directx memory leak detection• Optimisation infoLet op! Bij gebruik 3DSMax Retail version kiezen!!!

Vooraf: DirectX mappen

• C:\Program Files\Microsoft DirectX SDK (August 2008):– Lib: Bibliotheken van klasses en functies– Include: Alle dx header files– Samples: vele voorbeelden met code– Documentation: Uitleg over de API– Utilities: allerlei tools

4.1 Overview blz 66

Graphics Device – Nvidia of

ATI of Matrox of

HAL Hardware

Abstraction Layer

verzameling van drivers

Direct3D

OpenGL

Application

Application

DirectX is verameling van Direct3D, DirectSound, DirectInput, Xinput,…

Demo Caps Viewer

4.1.1 Overview blz 67

• Drie soorten devices:– HAL of Hardware device: wordt meestal gebruikt– SW device: • voor next gen developers (er is bv nog geen hardware

die de SDK ondersteunt)• niet aanwezig in DirectX SDK

– REF(erence) device: software emulation• Zeer traag (1FPS)• Vb: Driver debugging, dx10 testen op DX9 machine…

4.1.2 COM

• Common Object Model:– Microsoft technologie– Programmeertaal onafhankelijk– Backwards compatibility– Com Object in c++ is een Interface (soort klasse)– Eigen geheugenbeheer– GEEN new() maar via functies krijgen we pointers– GEEN delete() maar Release()

4.2 Vooraf, enkele concepten• 4.2.1 Surfaces

– Matrix of pixels to store 2D image data– Is eigenlijk lineaire array– Pitch– Width– Height– Origin is top left– Interface:

• IDirect3DSurface9

4.2.2 Swap Chain and Page Flipping

• Swap Chain:– IDirect3DSwapChain9– Verzameling van surfaces – Gebruikt Page Flipping:• Surface1 is backbuffer: er wordt op getekend• Surface2 is frontbuffer: is zichtbaar (presented)• Tekenen is klaar: page flipping of swapping gebeurt nu: • Surface1 is nu frontbuffer en zichtbaar• Surface2 is nu backbuffer, wordt gewist, en op getekend

4.2.3 Pixel Formats

• Als een surface wordt gemaakt moeten we het pixel format weten:– Hoeveel bits voor rood, groen, blauw en alpha– Enkele voorbeelden:– D3DFMT_R5G6B5: 16 bits of 2 bytes per pixel

• Slechts 5 bits voor rood: 32 rood tinten (banding)• Voordeel: weinig geheugen nodig

– D3DFMT_X8R8G8B8: 32 bits of 4 bytes per pixel• 256 tinten voor elk kleur• Wordt steeds gebruikt

4.2.4 Display Adapters

• Een display adapter is een fysische grafische kaart.

• Meer dan 1 is mogelijk (dual head, twee kaarten)

• IDirect3D9 interface enumerates alle adapters:– Aantal adapters– DisplayModes van elke adapter

4.2.5 Depth Buffer

• Is surface dat diepte informatie bevat• Range: van 0.0 (vooraan) tot 1.0(verst)• Uitleg….

4.2.6 Multisampling

• Multisampling vermijdt hoekige resultaten• Verlaagt de framerate• D3DMULTISAMPLE_TYPE:– D3DMULTISAMPLE_NONE– D3DMULTISAMPLE_2_SAMPLES– …

• Niet elke hardware ondersteunt elke multisampling mode !

4.2.7 Memory Pools• Niet toegankelijk voor GPU:

– System Memory (RAM)• Wel Toegankelijk voor GPU:

– VRAM (video memory): toegankelijk voor GPU– AGP (agp memory)

• Memory Pools:– D3DPOOL_MANAGED:

• De data bevindt zich zowel in RAM als in VRAM• In RAM kan de cpu data wijzigen.• Als nodig is, kan Direct3D RAM kopiëren naar VRAM• Bij device reset moet deze data niet vrijgegeven en opnieuw ingeladen worden.

– D3DPOOL_DEFAULT:• De data bevindt zich in VRAM of AGP geheugen• Bij device reset moet deze data eerst worden vrijgegeven, en daarna opnieuw worden ingeladen.

– D3DPOOL_SYSTEMMEM:• De data bevindt zich in RAM geheugen en is dus niet toegankelijk voor de GPU.• Meestal gebruikt als er nog bewerkingen met de data moeten gebeuren vooraleer naar VRAM wordt

gekopieerd.

4.2.8 Vertex Processing and Pure Devices

• Software vertex processing• Hardware vertex processing

4.2.9 Device Capabilities

• Voor elk DirectX feature kan worden gecheckt of de hardware het ondersteunt.

4.3 Initialiseren van Direct3D

Stappen:• Verkrijg een pointer naar een IDirect3D9 interface:– Info over hardware– Verkrijgen van een pointer naar IDirect3DDevice9

• Check hardware ondersteuning voor display mode- en backbuffer formaat.

• Check hardware vertex processing support• Initialiseer een D3DPRESENT_PARAMETERS struct• Creëer een IDirect3DDevice9 object.

4.3 Toepassing

• Zie demo project met bijhorende uitleg.• Schrijf de uitleg als commentaar tussen de

code!