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

22
GSP1 2008-2009 Labo 01 Direct3D Foundations

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

Page 1: GSP1 2008-2009 Labo 01 Direct3D Foundations. Vooraf • Software: – Visual studio 2005 of/en 2008 met MSDN – DirectX SDK aug 2008 release (verschillende.

GSP1 2008-2009

Labo 01Direct3D Foundations

Page 2: GSP1 2008-2009 Labo 01 Direct3D Foundations. Vooraf • Software: – Visual studio 2005 of/en 2008 met MSDN – DirectX SDK aug 2008 release (verschillende.

Vooraf

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

tegelijk mogelijk)– Nvidia PhysX systemsoftware en sdk– Boek

Page 3: GSP1 2008-2009 Labo 01 Direct3D Foundations. Vooraf • Software: – Visual studio 2005 of/en 2008 met MSDN – DirectX SDK aug 2008 release (verschillende.

Vooraf: DirectX SDK

• Controleer deze settings:

Page 4: GSP1 2008-2009 Labo 01 Direct3D Foundations. Vooraf • Software: – Visual studio 2005 of/en 2008 met MSDN – DirectX SDK aug 2008 release (verschillende.

Vooraf: DirectX SDK

• Controleer deze settings:

Page 5: GSP1 2008-2009 Labo 01 Direct3D Foundations. Vooraf • Software: – Visual studio 2005 of/en 2008 met MSDN – DirectX SDK aug 2008 release (verschillende.

Vooraf: DirectX SDK

• Controleer deze settings:

Page 6: GSP1 2008-2009 Labo 01 Direct3D Foundations. Vooraf • Software: – Visual studio 2005 of/en 2008 met MSDN – DirectX SDK aug 2008 release (verschillende.

Vooraf: DirectX SDK

Page 7: GSP1 2008-2009 Labo 01 Direct3D Foundations. Vooraf • Software: – Visual studio 2005 of/en 2008 met MSDN – DirectX SDK aug 2008 release (verschillende.

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

Page 8: GSP1 2008-2009 Labo 01 Direct3D Foundations. Vooraf • Software: – Visual studio 2005 of/en 2008 met MSDN – DirectX SDK aug 2008 release (verschillende.

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

Page 9: GSP1 2008-2009 Labo 01 Direct3D Foundations. Vooraf • Software: – Visual studio 2005 of/en 2008 met MSDN – DirectX SDK aug 2008 release (verschillende.

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

Page 10: GSP1 2008-2009 Labo 01 Direct3D Foundations. Vooraf • Software: – Visual studio 2005 of/en 2008 met MSDN – DirectX SDK aug 2008 release (verschillende.

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…

Page 11: GSP1 2008-2009 Labo 01 Direct3D Foundations. Vooraf • Software: – Visual studio 2005 of/en 2008 met MSDN – DirectX SDK aug 2008 release (verschillende.

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()

Page 12: GSP1 2008-2009 Labo 01 Direct3D Foundations. Vooraf • Software: – Visual studio 2005 of/en 2008 met MSDN – DirectX SDK aug 2008 release (verschillende.

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

Page 13: GSP1 2008-2009 Labo 01 Direct3D Foundations. Vooraf • Software: – Visual studio 2005 of/en 2008 met MSDN – DirectX SDK aug 2008 release (verschillende.

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

Page 14: GSP1 2008-2009 Labo 01 Direct3D Foundations. Vooraf • Software: – Visual studio 2005 of/en 2008 met MSDN – DirectX SDK aug 2008 release (verschillende.

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

Page 15: GSP1 2008-2009 Labo 01 Direct3D Foundations. Vooraf • Software: – Visual studio 2005 of/en 2008 met MSDN – DirectX SDK aug 2008 release (verschillende.

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

Page 16: GSP1 2008-2009 Labo 01 Direct3D Foundations. Vooraf • Software: – Visual studio 2005 of/en 2008 met MSDN – DirectX SDK aug 2008 release (verschillende.

4.2.5 Depth Buffer

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

Page 17: GSP1 2008-2009 Labo 01 Direct3D Foundations. Vooraf • Software: – Visual studio 2005 of/en 2008 met MSDN – DirectX SDK aug 2008 release (verschillende.

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 !

Page 18: GSP1 2008-2009 Labo 01 Direct3D Foundations. Vooraf • Software: – Visual studio 2005 of/en 2008 met MSDN – DirectX SDK aug 2008 release (verschillende.

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.

Page 19: GSP1 2008-2009 Labo 01 Direct3D Foundations. Vooraf • Software: – Visual studio 2005 of/en 2008 met MSDN – DirectX SDK aug 2008 release (verschillende.

4.2.8 Vertex Processing and Pure Devices

• Software vertex processing• Hardware vertex processing

Page 20: GSP1 2008-2009 Labo 01 Direct3D Foundations. Vooraf • Software: – Visual studio 2005 of/en 2008 met MSDN – DirectX SDK aug 2008 release (verschillende.

4.2.9 Device Capabilities

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

Page 21: GSP1 2008-2009 Labo 01 Direct3D Foundations. Vooraf • Software: – Visual studio 2005 of/en 2008 met MSDN – DirectX SDK aug 2008 release (verschillende.

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.

Page 22: GSP1 2008-2009 Labo 01 Direct3D Foundations. Vooraf • Software: – Visual studio 2005 of/en 2008 met MSDN – DirectX SDK aug 2008 release (verschillende.

4.3 Toepassing

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

code!