Würfelsimulator
Würfelsimulator
Würfelsimulator
Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.
YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.
PDA-Programmieren • "<strong>Würfelsimulator</strong>" • SS10 • Simon Brennecke • Ivo Torp • Klaus Manneck<br />
Rendern<br />
1 public void Render()<br />
2 {<br />
3 device.Clear(ClearFlags.Target | ClearFlags.ZBuffer, Color.Blue, 1.0f, 0);<br />
4 device.BeginScene();<br />
5<br />
6 if (vb != null)<br />
7 {<br />
8 device.VertexFormat = CustomVertex.PositionNormalTextured.Format;<br />
9 device.SetStreamSource(0, vb, 0);<br />
10<br />
11 foreach (DrawingInfoObject dio in drInfo)<br />
12 {<br />
13 Matrix m;<br />
14 m = dio.o.Orientation;<br />
15 m.Multiply(Matrix.Translation(dio.o.Position));<br />
16<br />
17 device.Transform.World = m;<br />
18<br />
19 foreach (DrawingInfoSurface dis in dio.Surfaces)<br />
20 {<br />
21 device.SetTexture(0, dis.tex);<br />
22 device.DrawPrimitives(PrimitiveType.TriangleFan, dis.start, dis.length<br />
- 2);<br />
23 }<br />
24 }<br />
25 }<br />
26 device.EndScene();<br />
27 device.Present();<br />
28 }<br />
Dies ist der vollständige Code, der die Würfel in 3D rendert.<br />
In Zeile 3 wird der BackBuffer auf eine blaue Hintergrundfarbe geleert – ebenso wird der Z-Buffer<br />
geleert.<br />
Zeile 4 leitet den Bereich ein, in dem alle Renderbefehle stattfinden müssen. Für die meisten<br />
Programme ist es effizienter, wenn alle Polygone in nur einem “Renderbereich” zwischen<br />
device.BeginScene() und device.EndScene() liegen.<br />
In Zeile 8 wird das Vertexformat eingestellt. In diesem Fall Vertices mit Positionsangabe, eine<br />
Normalen und Texturkoordinaten.<br />
Zeile 9 wählt den Vertexbuffer als Datenquelle aus.<br />
In den Zeilen 13 bis 17 findet pro Würfel die genaue Positionierung und Drehung statt.<br />
In Zeile 21 wird pro einzelne Fläche eines Würfels die entsprechende Textur aktiviert.<br />
Zeile 22 ist schließlich der (einzig vorhandene) Befehl, der Polygone zum Rendern an die<br />
Grafikhardware “schickt”.<br />
Der Renderbereich wird in Zeile 26 verlassen, und der wichtigste Befehl in Zeile 27 führt den<br />
Kopiervorgang vom BackBuffer auf den Bildschirm aus.<br />
Seite 30 / 37