Zurück zur Gesamtübersicht "Physik mit Direct3D"
Physik mit Direct3D
Wie aktiviere ich Direct3D in meinem Projekt? (II)
Das Einstellungsfenster im eigenen Projekt benutzen
Es ist möglich, das Einstellungsfenster in jedem Projekt zu aktivieren.
Beispielsweise könnte man das Fenster zum Programmstart anzeigen lassen,
wenn wir die Methode FormCreate wie folgt
programmieren:
void __fastcall TForm1::FormCreate(TObject *Sender)
{
Direct3DParameters p;
FormDirect3DSetup = new TFormDirect3DSetup(this);
p = FormDirect3DSetup->execute();
delete FormDirect3DSetup;
}
Sinn der Direct3DParameters-Klasse (UnitDirect3D_1.h)
Die execute-Methode des Einstellungsfensters
gibt einen Wert der Klasse Direct3DParameters zurück
(hier: Variable p). In diesem Wert sind
alle Einstellungen gespeichert, die der Benutzer getroffen hat.
Deklaration der Klasse Direct3DParameters
Sie ist im Header UnitDirect3D_1.h zu finden:
struct Direct3DParameters
{
int adapter;
D3DDEVTYPE deviceType;
bool windowed;
D3DDISPLAYMODE displayMode;
D3DFORMAT backBufferFormat;
D3DFORMAT zStencilBufferFormat;
D3DMULTISAMPLE_TYPE multiSampleType;
DWORD multiSampleQualityLevel;
DWORD flags;
D3DCAPS9 deviceCaps;
};
Die execute-Methode des Einstellungsfensters
Diese einzelnen Klassenattribute werden in der execute-Methode des
Einstellungsfensters mit den gewählten Optionen gefüllt (siehe das Ende der
Header-Datei UnitDirect3D_1.h):
Direct3DParameters TFormDirect3DSetup::execute()
{
Direct3DParameters parameters;
lpSetupControls->init();
ShowModal();
parameters.adapter = lpDirect3DSetup->adapter;
parameters.deviceType = lpDirect3DSetup->deviceType;
parameters.windowed = lpDirect3DSetup->windowed;
parameters.displayMode = lpDirect3DSetup->lpModes[lpDirect3DSetup->mode];
parameters.backBufferFormat = lpDirect3DSetup->backBufferFormat;
parameters.zStencilBufferFormat = lpDirect3DSetup->zStencilBufferFormat;
parameters.multiSampleType = lpDirect3DSetup->multiSampleType;
parameters.multiSampleQualityLevel = lpDirect3DSetup->qualityLevel;
parameters.flags = D3DCREATE_HARDWARE_VERTEXPROCESSING;
parameters.deviceCaps = lpDirect3DSetup->deviceCaps;
return parameters;
}
Weiter zu "Direct3D starten (III)"
Zurück zur Gesamtübersicht "Physik mit Direct3D"