# Klausurvorbereitung - Es gibt keine Minuspunkte, aber halbe Punkte - Antwortlänge an Punkte pro Frage anpassen - Reihenfolgen und Sortierungsfragen auch werden auch dabei sein - Datentypen oder Enumwerte aus D3D9/D3D11 (z. B. WMQUITE, WMDESTROY, WMEXIT) - History-Inhalte aus den Folien aus den Folien kommt nicht **Transformation**:(Local Space) - World - View - Projection **Zugelassen für Rechnungen**: - Taschenrechner (nicht programmierbar) - Windows oder Physisch ### Themengebiete: ##### Generell: - Graphics C ++ (z. B. warum C++ benutzen) - Unterschied zwischen Pointer und Handle, Pointer-Pointer - COM (Component Object Model von Windows) - generelle Graphics Programmingsachen ##### Fenster: - Fensternachrichten (Typen aus Vorlesungsfolien) - Messagequeue - Wozu braucht man Nachrichten? - Messagequeue-Funktion: Window Prop ##### Graphics -API: - Welche gibt es? - Direct 3D - Fixed Function vs. Programmable Pipeline - Elemente der Pipelines: Vertex, Mesh, Transformation, Spaces, Projektion, Primitive Types, Unterschied List vs. Strip, Texture Mapping (Was ist eine Normale?) - Homogenisierte Koordinaten und dessen Bedeutung - Berechnungen: Koordinaten, FPS, Deltatime, Größe von Strukturen - Beispiele: - Indexbuffers -> kibiByte beachten -> Indices zählen - Vertexbuffer berechnen (Umschrieben, nicht direkt gestellt) - Texturebuffer berechnen - Mipmapping (zählen der Stufen) - Textures: - UV-Mapping - UV-Tiling (Address Modes) - Bild von Modell und gefragt wie viele Verticies benötigt werden und welche - Lighting: - Sources, Lichtbestandteile (Ambient Light, Diffuse Light, Specular Light, Emission Light - Vertex- vs. Pixel-Lighting - Stages: - Screen-Stage - Rasterizer-Stage: Front faces /Back faces ##### Direct3D/DirectX: - Direct3D9 and Direct3D11 - ID3D11 Device Context, IDirectDevice9 - konkrete Datentypen aus Framework - ID3D11 Device vs. ID3D11 Device Context ##### Shader: - Shadertypen (6): - Vertex shade - Hall Shader - Domain Shader - Geometry Shader - Pixelshader - Computeshader - zu jedem Shader Grundfunktionalitäten, wozu sie da sind - Shader Ressources (Vertexbuffer, Indexbuffer, Constantbuffer) - HSL: High Level Shader Language, genereller Sinn von Semantiken in HSL ##### Verticies berechnen: - Ziel: Lichtberechnung und Texturierung 1. Verticiesanzahl berechnen: Verticies = Ecken (4 pro Fläche) - 4 Verticies * 6 Flächen = **24 Verticies** - Eine Normale pro Fläche wegrn des Lichts, deswegen 24 Verticies statt 8 2. Vertexgröße: - Position: 3 Floats (x,y,z) - Normale: 3 Floats (x,y,z) - UV-Koordinaten: 2 Floats - 1 Float = 4 Byte ↳ 8 Floats. 4 Byles: **32 Byte pro Vertex** - Verfexcolor: 4 Floats - Grafikkarte ist auf Floats optimiert 3. Vertexbuffergröße: - 24 Vertexe * 32 Byte pro Vertex = **768 Byte** - 2 Byle = 1 Word ##### Indexbuffer berechnen: - Primitive Type Lists: Triangle List (oder Linelist, Pointlist) - 6 Flächen, 2 Dreiecke pro Fläche - Mehrfachverwendung der Verticies - Zusatzinfos nötig für die Berechnung: Wie viele Flächen und welche Form haben die Flächen - wenn die Wahl frei steht: Triangle List (haben wir in der Vorlesung immer benutzt) - Bytegröße selbst wählen: Anzahl der Indicies muss in die Bytegröße passen - Berechnung: 1. 12 Dreiecke * 3 Ecken = 36 Indicies 2. 36 Indicies * 2 Byte = **72 Byte**