1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
|
// Jedes Format in der Liste durchgehen und prüfen, ob es verfügbar ist
for(int iFormat = 0; iFormat < 6; iFormat++)
{
// Unterstützung abfragen
if(SUCCEEDED(g_pD3DTemp->CheckDeviceFormat(iSelectedAdapter,
*pSelectedDeviceType,
bWindowed ? CurrentVideoMode.Format : pSelectedVideoMode->Format,
D3DUSAGE_RENDERTARGET,
D3DRTYPE_SURFACE,
aFormat[iFormat])))
{
// Prüfen, ob der Gerätetyp mit dieser Einstellung verfügbar ist
if(SUCCEEDED(g_pD3DTemp->CheckDeviceType(iSelectedAdapter,
*pSelectedDeviceType,
bWindowed ? CurrentVideoMode.Format : pSelectedVideoMode->Format,
aFormat[iFormat],
bWindowed)))
{
// Wenn widersprüchliche Formate gewählt wurden, muss eine Formatkonvertierung
// unterstützt sein.
bHardwareFormatConversion = TRUE;
if(bWindowed && aFormat[iFormat] != CurrentVideoMode.Format)
{
if(SUCCEEDED(g_pD3DTemp->CheckDeviceFormatConversion(iSelectedAdapter,
*pSelectedDeviceType,
CurrentVideoMode.Format,
aFormat[iFormat])))
{
// Hardwarekonvertierung ist nicht möglich!
bHardwareFormatConversion = FALSE;
}
}
if(bHardwareFormatConversion)
{
// Formattext abfragen und Text generieren
tbGetD3DFormatString(aFormat[iFormat], acBackBufferString);
if(bWindowed)
{
sprintf(acBackBufferString, "%s %s", acBackBufferString,
aFormat[iFormat] != CurrentVideoMode.Format ? "Hardwarekonv." : "");
}
// Listeneintrag generieren
iIndex = (int)(SendDlgItemMessage(hDlg, TB_IDC_D3DC_BACK_BUFFER_FORMATS, CB_ADDSTRING,
0, (LPARAM)(acBackBufferString)));
// Dem Eintrag das Format zuweisen
pFormat = (D3DFORMAT*)(tbMemAlloc(sizeof(D3DFORMAT)));
*pFormat = aFormat[iFormat];
SendDlgItemMessage(hDlg, TB_IDC_D3DC_BACK_BUFFER_FORMATS, CB_SETITEMDATA,
iIndex, (LPARAM)(pFormat));
}
}
}
}
|