1 / 69

Spelutveckling med .NET

Spelutveckling med .NET. Johan Lindfors. Agenda. Introduktion till DirectX och Direct3D Komponenter Grafik DirectX SDK och Visual Studio Visual Studio 2005 Express? XNA XNA Framework XNA GameStudio Express. Vad är DirectX?

alta
Télécharger la présentation

Spelutveckling med .NET

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Spelutveckling med .NET Johan Lindfors

  2. Agenda • Introduktion till DirectX och Direct3D • Komponenter • Grafik • DirectX SDK och Visual Studio • Visual Studio 2005 Express? • XNA • XNA Framework • XNA GameStudio Express

  3. Vad är DirectX? • En grupp av tekniker som erbjuder multimedafunktioner till Windows-applikationer • En samling komponenter • API oberoende av hårdvara

  4. Grafik • Direct3D – 3D grafik • DirectDraw – 2D grafik • Ljud • DirectSound • Inspelning och uppspelning • Mixning i realtid • “Surround” och positionering i 3D • Filter och effekter (reverb, dist osv) • DirectMusic

  5. DirectInput • Hanterar inmatning med kontroller • Tangentbord, joysticks, möss osv. • Stöd för “Force Feedback” • DirectPlay • Protokoll-oberoende nätverksmöjligheter • Fungerar med NAT och brandväggar • DirectShow • “Streaming media” • Video

  6. “Managed DirectX” • “High Level Shader Language” • API för animationer • Förbättrat 2D stöd • Interoperabilitet med GDI • En massa annat

  7. Komponenter • DirectX grafik • 2D – DirectDraw • 3D – Direct3D • DirectSound • DirectInput • DirectPlay • AudioVideoPlayback • Enklare hantering av ljud och video • Alla funktioner och “features”

  8. Fördelar med MDX • Bättre prestanda • Eliminerar flaskhalsar med COM interoperabilitet • Prestandan ligger i paritet med ren C++ • Enklare utveckling • Färre rader kod • ”Ingen” minneshantering • Kraftfull debuggning med Visual Studio

  9. Grundläggande 3D Y Z X • Koordinatsystemet • Vänsterhänt • Högerhänt (OBS standard i XNA) • Nästan allting konstrueras av trianglar • En modell (kallas för Mesh) är en geometrisk struktur av trianglar

  10. 3D matematik • Vektorer (Vector3) • Används för att definera punkter, riktningar, avstånd • Matriser • Matrix = 4x4 matris • Används för transformationer • Quaternion • Används för rotationer

  11. ”Rendering Pipeline” • Applikation • Logik som är specifik för applikationen • Geometri • Definerar hur “världen” ser ut • Operationer på polygoner • Rasterisering • Tilldelar färger till pixlar på skärmen • Operationer på pixlar

  12. Anatomin av en 3D-applikation • Starta Direct3D • Initialisera objekt • “RestoreDeviceObjects” • “Main Loop” • Uppdatera • Rita • Repetera • Städa upp Initialisera Hanterainmatning Uppdateravariabler Uppdateraskärm Städa upp

  13. Vilken är den optimala loopen?

  14. 3D kort • Videominne • Vertexdata, texturer, osv. • 3D kort har mer och mer tagit över geometriska operationer • 3D kort är mycket bättre på geometri än en vanlig CPU • Specialiserade för vektor-matematik • Programmerbar “pipeline” ger nya möjligheter

  15. Objektet ”device” • Exponerar funktionalitet från grafikkorten • Hanterar dubbel- och trippel-buffring • ”Hardware” • Erbjuder bara existerande förmågor • ”Reference” • Enbart implementera i mjukvara • Erbjuder alla förmågor • Betydligt lägre prestanda

  16. Skapa en device och rensa ytan

  17. Primitiva typer v5 v2 v4 v1 v6 v3 v2 v4 v1 v3 v5 v2 v3 v1 v4 v5 • Enkla • PointList • LineList • LineStrip • Lite mer avancerade • TriangleList • TriangleStrip • TriangleFan

  18. Rita något på skärmen

  19. Mer om vertex • En vertex är mer omfattande än en punkt • Vanliga vertex-format (CustomVertex) • Transformed - X och Y för skärm • TransformedColored - ovanstående och färg • PositionOnly - X, Y och Z • PositionColored - ovanstående och färg • Kan också innehålla • Normal för exempelvis ljussättning • Tu och Tv koordinater för texturer • Lagras ofta i en ”VertexBuffer”

  20. VertexBuffer • Effektivare buffert av vertex • Kan lagra vertex i GPU-minnet • Kan kombineras med en uppsättning index • IndexBuffer • Vektor med int eller short • Kan snåla med minnet (med begränsningar)

  21. Använda Vertex- och Index-bufferts

  22. Transformationer • “View Transform” • Positionerar kameran • Kontrollerar kamerans riktning • Beskriver vad som är uppåt • “Projection Transform” • Kontrollerar kamerans lins • Hur mycket och hur långt ska vi se

  23. Transformationer • “World Transform” • Positionerar en modell i förhållande till andra • Förflyttning • Matrix.Translation(…) • Rotation • Matrix.RotationX(…) • Matrix.RotationYawPitchRoll(…) • Skalning • Matrix.Scaling(…)

  24. Skapa en kamera

  25. Texturer (0,0) (0,1) (1,1) (0,0) (1,0) (1,0) (1,1) • Texturer • ”Mappa” en bild mot en triangel • En bild har bara 2 dimensioner • Tu och Tv koordinater • Direct3D hanterar transformationer

  26. Använda texturer

  27. Ljussättning • Olika typer av ljus • Ambient – Lika mycket ljus överallt • Direction – solen • Point – lampa • Spot – ficklampa • Attribut på ljus • Position, riktning, räckvidd och avmattning • ”Diffuse”, ”ambient”, ”Specular”

  28. Material och skuggor Material reflekterar ljus ”Diffuse” reflektion ”Ambient” reflektion ”Specular” reflektion och styrka ”Emission” – material verkar skina utan ljus Skuggor Flat – hela polygonen får samma nyans Gouraud – interpolering mellan vertex Normalen är viktig!!!

  29. Varde ljus!

  30. Modeller och objekt Skapas sällan av programmerare Flertal verktyg 3D Studio Max, Maya, Softimage Blender, Milkshape3D Olika filformat .X är vanligt för DirectX Funktionalitet finns i D3DX Mesh Avancerade objekt

  31. Meshes Vad behövs för att rita en Mesh Ladda data Information om vertex och index Material och texturer Uppdatera postition Rita Anropa DrawSubset(…) för varje material

  32. Djup med z-buffer Sparar värde på djup för varje pixel Jämförs för att hantera perspektiv ”Stencil buffer” Kan användas för skuggor Andra bufferts

  33. Avancerade objekt

  34. Animationer • Animerade meshes • “Key Frame animation” • “Skinned Meshes” • Animations-API för att förenkla • Har stöd för interpolering mellan “frames” • Blanda animationer

  35. Animationer

  36. Text ”Fog” 2D och 3D tillsammans ”Skybox” ”AlphaBlending” Generera terränger Rita i fullskärm Flera skärmar samtidigt (backspegel) Andra saker

  37. Andra saker…

  38. ”Programmable Pipeline” • Introducerades i DirectX 8 • Ger flexibilitet och prestanda • Vertex Shader • Jobbar med en vertex åt gången • Kan inte lägga till nya vertex • Pixel Shader • Jobbar med en pixel åt gången • Kan inte lägga till pixlar

  39. ”Vertex Shader” Kan skapa effekter som inte setts tidigare Simulering av kläder Avancerad animation Ansiktsrörelser och talsynkronisering Linseffekter Verktyg finns Nvidia Endast en vertex åt gången Kan inte lägga till nya vertex

  40. ”Pixel Shader” Förändra det som slutligen ritas, per pixel Ljussättning Skuggor Serieboks utseende Jobbar med en pixel åt gången Kan inte lägga till nya pixlar

  41. Effektfiler Uppdelade i tre delar Variabel deklarationer Texturer, matriser, parametrar Tekniker och passager Tekniker kan delas upp för hantering av olika typer av hårdvara Funktioner Kod som skrivs i exempelvis HLSL

  42. Effekter och HLSL

  43. DirectInput och numera även XInput Olika enheter Tangentbord Möss Gamepads och andra kontroller Relativt enkel hantering Initiera Läs av Agera Hantera inmatning

  44. Hantera inmatning

  45. DirectSound Kan använd as för ljudeffekter och musik Hårdvarukontrollerade bufferts Flexibilitet Positionera ljud i 3D-rymden Lägg till effekter, reverb, eko osv… Ljud och musik

  46. Ljud och musik

  47. Exempel Tutorials Bra att börja med Men det finns bättre på nätet  Sample Framework Ett ramverk som utgångspunkt Verktyg DirectX SDK

  48. Hur används Sample Framework?

  49. PIX Kan användas för att analysera applikationen XACT Verktyg för konstruktion av ljud och sekvenser DXViewer Öppna och analysera .X-filer (även .FX) Texture tool För att skapa och editera texturer Några verktyg i DirectX SDK

  50. Tänk på prestandan • 33ms… klockan tickar snabbt! • Den mesta tiden spenderas ritandes • Hitta ställan att förberäkna värden istället för beräkningar varje “frame” • Minneshantering • Trådhantering • Boxing/unboxing • Släpp objekt

More Related