SelfDXD von Martin Pyka
SelfDXD --- DirectXGraphic --- Direct3D Delphi Referenz --- Records
D3DPRESENT_PARAMETERS

TD3DPresent_Parameters = packed record
  BackBufferWidth                 : Cardinal;
  BackBufferHeight                : Cardinal;
  BackBufferFormat                : TD3DFormat;
  BackBufferCount                 : Cardinal;

  MultiSampleType                 : TD3DMultiSample_Type;

  SwapEffect                      : TD3DSwapEffect;
  hDeviceWindow                   : HWND;
  Windowed                        : BOOL;
  EnableAutoDepthStencil          : BOOL;
  AutoDepthStencilFormat          : TD3DFormat;
  Flags                           : LongWord;

  FullScreen_RefreshRateInHz      : Cardinal;
  FullScreen_PresentationInterval : Cardinal;
end;

BackBufferWidth/BackBufferHeight
Diese beiden Parameter sind nur wichtig, wenn Ihre Anwendung im Vollbildmodus laufen soll. In Width und Height geben Sie dann einfach die gewünschte Auflösung in Breite und Höhe ein.

BackBufferFormat
Hiermit bestimmen Sie die Auflösung, also wieviel Bit-Informationen für jeden Pixel auf dem Bildschirm gespeichert werden sollen. 'BackBufferFormat' ist vom Typ TD3DFORMAT, was nichts anderes ist als LongWord. DirectX unterstützt 40 Formate, die alle durch eine Zahl BackBufferFormat übergeben werden können. Um sich nicht alle Zahlencodes für jede Auflösung merken zu müssen, gibt es Konstante, die man dafür verwenden kann. Unter D3DFormat finden Sie eine Übersicht Über alle Konstanten.

BackBufferCount
Mit BackBufferCount bestimmen Sie, wieviele Backbuffer DirectX verwalten soll. In der Regel reicht einer. Sie können bis zu 3 Backbuffer gleichzeitig verwenden. Die Übergabe des Wertes 0 wird übrigens von DirectX als 1 gewertet. Einen Backbuffer benötigen Sie also zwingend.

MultiSampleType
Multisampling ist ein Antialiasing-Verfahren. Antialiasing bedeutet, diagonal verlaufende Ränder eines 3D-Körpers zum Beispiel farblich so zu verändern, dass der typische Treppeneffekt nicht sichtbar ist. Selbst bei hohen Auflösungen kann man zum Teil noch jeden einzelnen Pixel erkennen, wenn er sich farblich stark vom Hintergrund abhebt. Bei diagonalen Linien erkennt man das vorallem daran, dass diese Linie scheinbar ganz viele Ecken am Rand hat. Antialiasing verwischt diese Ecken, so dass eine Linie bzw. ein Polygon viel glaubwürdiger zur Szene passt. Multisampling ist dabei nur eins von 3 möglichen Verfahren. Bei dieser Technik wird jedem Pixel eine bestimmte Anzahl an Ebenen zugewiesen. Beim Rendern eines Bildes werden dann jeder Ebene die Farben des Randes des jeweiligen Objektes zugewiesen. Aus diesen verschiedenen Farbe wird dann die Durchschnittsfarbe errechnet, die letztendlich angezeigt wird. Dadurch wird die Bildqualität verbessert. In MultiSampleType geben Sie also im Grunde die Anzahl der Ebenen an. Diese kann zwischen 1 und 16 liegen. Sie können dafür auch die D3DMultiSample_Type-Aufzählungen verwenden. Multisampling lässt sich jedoch nur verwenden, wenn SwapEffect auf TD3DSWAPEFFECT_DISCARD gestellt ist.

SwapEffect
Mit SwapEffect geben Sie an, in welcher Weise Back- mit Frontbuffer vertauscht werden sollen. Verwenden Sie dazu eine D3DSwapEffect-Konstante.

hDeviceWindows
Hier müssen Sie lediglich das Handle der Form übergeben, in der ihre DirectXGraphics-Anwendung dargestellt werden soll.

Windowed
Mit einem booleschen Wert betimmen Sie, ob Ihre Anwendung im Fenster laufen soll, oder im Vollbild. True steht für Fenstermodus, False logischerweise für Vollbildmodus. Ist Fenstermodus aktiviert, werden die Grösseneinstellungen Ihrer Form übernommen.

EnableAutoDepthStencil
Erstellt einen sogenannten Z-Buffer. Dieser wird in 3D-Anwendungen benötigt, damit Objekte die sich im Vordergrund befinden nicht versehentlich von Objekten überlappt werden, die sich eigentlich im Hintergrund befinden. Mit true schalten Sie den Tiefenbuffer ein, mit false aus. 2D-Anwendungen benötigen zum Beispiel oftmals keinen Z-Buffer.

AutoDepthStencilFormat
Hier geben Sie das Format dieses Z-Buffers an. Dafür stehen Ihnen die D3DFormat-Konstanten zur Verfügung.

Flags
Dies ist ein Parameter, der in der derzeitigen Version nicht genutzt wird, doch schonmal eingerichtet wurde und zeigt, dass in zukünfitgen Versionen neue Einstellungsmöglichkeiten und Funktionen hinzukommen werden. Bei DirectX 8.0 muss dieser Parameter allerdings 0 sein.

FullScreen_RefreshRateInHz
Die Rate in der die Grafikkarte den Screen erneuern soll. Verwenden Sie hier die durch die Funktion Direct3D8.EnumAdapterModes ermittelte Refreshrate oder eine D3DPresent_Rate_Flags-Konstante. Im Fenstermodus muss diese Variable 0 sein.

FullScreen_PresentationInterval
Gibt an, wie oft das Bild, in Abhängigkeit zur Bildwiederholfrequenz, von DirectX aktuallisiert werden soll. Benutzen Sie dafür eine D3DPresent_Interval_Flags-Konstante.