tisdag 21 oktober 2008

Ett landskap

Sen senaste gången jag skrev har jag JOBBAT 66 H på motorn. Min första kamera är klar och fungerar bra. Jag har dessutom skapat en början på min s.k. "Terräng-Motor" som kommer ligga till grund till mycket av 3D-motorn. Jag skanckade tidigare om att en triangel uppbyggd av 3 Vertex med 3 coordinater var.

Terräng-motorns uppgift är att utifrån en längd och en bredd skapa ett "rutnät" med massor av trianglar som tillsammans ska bilda ett vackert lanskap med kullar berg och dalar!



1: Jag började med en ekvation för att placera ut mina Vertices i ett rutnät utifrån en höjd och bredd



2: Utifrån mina vertex skapade jag ett s.k. Index. Ett index är en massa siffror som härleder till mina vertex och som hjälper grafik-enheten i datorn att behandla mina data.



3: All data för för jag sedan över till grafik-enheten's internminne med en s.k VertexBuffert för mina Vertices och en IndexBuffert för min Indices. Anlendningen är att grafik-kortet behöver dessa data för att skapa mina trianglar och om de redan ligger på grafik-kortet blir det väldigt lätt-tillgängla och hela processen går snabbare! Tänk dig själv behöva springa ner till hemköp och köpa en penna varje gång du skulle skriva nåt istället för att bara öppna skrivbords-lådan?



4: Jag har en funktion som i princip startar igen precis när den tagit slut. Positionerar jag ut mina vertex och indices från buffertarna på min World-Matrix,



5: Varje vertex flyger iväg i en ström till en "Shader" som "färglägger" dom försig. Som ett rullband i en leksaksfrabrik med bollar som ska färgläggas! Jag ger även instruktioner om hur stor varje Vertex är i bytes för att veta precis var på strömmen en vertex slutar och nästa börjar.



6: Varje vertex blir positionerad utifrån min Kameras Projection-Matrix och min View-matrix.

Detta placera dom på en 2d-skärm fast skapar känslan av en 3d-Värld!



Resultatet ser ni här. Jag har inte angivit någon speciell färg än så jag renderar d.v.s ritar dem ihåliga i s.k. wireframe-stadium.

Inga kommentarer: