02.11.2013 Aufrufe

Würfelsimulator

Würfelsimulator

Würfelsimulator

MEHR ANZEIGEN
WENIGER ANZEIGEN

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

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!