Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!
Werbeanzeige
Quellcode |
|
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 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 |
//******************************************************************************************** //Für das Bildspeicherformat EFEResult UpdateBackBufferFormatComboBox(HWND hConfigWnd) { D3DDISPLAYMODE sD3DWindowsDisplayMode; D3DFORMAT asD3DFormats[] = {D3DFMT_A2R10G10B10, D3DFMT_X8R8G8B8, D3DFMT_A8R8G8B8, D3DFMT_R5G6B5, D3DFMT_X1R5G5B5, D3DFMT_A1R5G5B5}; const char acsFormatDesc[6][21] = {"A2R10G10B10 (32 Bit)", "X8R8G8B8 (32 Bit)", "A8R8G8B8 (32 Bit)", "R5G6B5 (16 Bit)", "X1R5G5B5 (16 Bit)", "A1R5G5B5 (16 Bit)"}; unsigned short usFormat = 0; long lResult = 0; //Die ComboBox leeren SendMessage(hBackBufferFormatComboBox, CB_RESETCONTENT, 0, 0); //Den aktuellen Displaymodus von Windows holen pD3DInterface->GetAdapterDisplayMode(sDXConfig.Direct3D.uiGraphicAdapter, &sD3DWindowsDisplayMode); for(usFormat = 0; usFormat < 7; usFormat++) { //Auf Verfügbarkeit prüfen lResult = pD3DInterface->CheckDeviceFormat(sDXConfig.Direct3D.uiGraphicAdapter, sDXConfig.Direct3D.D3DDevType, sDXConfig.Direct3D.bWindowMode ? sD3DWindowsDisplayMode.Format : sDXConfig.Direct3D.D3DDisplayMode.Format, D3DUSAGE_RENDERTARGET, D3DRTYPE_SURFACE, asD3DFormats[usFormat]); //Wenn es nicht verfügbar ist, einfach weiter machn if(lResult == D3DERR_NOTAVAILABLE) continue; //Fehler in der Funktion CheckDeviceFormat if(lResult == D3DERR_INVALIDCALL) { MessageBox(hConfigWnd, "Ein Bildspeicherformat konnte nicht auf verfügbarkeit getestet werden", "FireEagle-DirectX-Konfiguration", MB_OK | MB_ICONEXCLAMATION); FELogDXError("CheckDeviceFormat", lResult, __FILE__, __LINE__); } //Kompatibel mit DeviceType? lResult = pD3DInterface->CheckDeviceType(sDXConfig.Direct3D.uiGraphicAdapter, sDXConfig.Direct3D.D3DDevType, sDXConfig.Direct3D.bWindowMode ? sD3DWindowsDisplayMode.Format : sDXConfig.Direct3D.D3DDisplayMode.Format, asD3DFormats[usFormat], sDXConfig.Direct3D.bWindowMode); //Wenn es nicht mit dem DeviceType kompatibel ist, verwerfen und weitermachen if(lResult == D3DERR_NOTAVAILABLE) continue; //Fehler in der Funktion CheckDeviceType if(lResult == D3DERR_INVALIDCALL) { MessageBox(hConfigWnd, "Ein Bildspeicherformat konnte nicht auf Kompatibilität mit dem Gerätetyp geprüft werden", "FireEagle-DirectX-Konfiguration", MB_OK | MB_ICONEXCLAMATION); FELogDXError("CheckDeviceType", lResult, __FILE__, __LINE__); } //Ist eine Konvertierung nötig if(sDXConfig.Direct3D.bWindowMode && asD3DFormats[usFormat] != sD3DWindowsDisplayMode.Format) { lResult = pD3DInterface->CheckDeviceFormatConversion (sDXConfig.Direct3D.uiGraphicAdapter, sDXConfig.Direct3D.D3DDevType, sD3DWindowsDisplayMode.Format, asD3DFormats[usFormat]); //Wenn nicht konvertierbar, ignorieren und weiter if(lResult == D3DERR_NOTAVAILABLE) continue; //Wenn CheckDeviceFormatConversion fehlschlug if(lResult == D3DERR_INVALIDCALL) { MessageBox(hConfigWnd, "Ein Bildspeicherformat konnte nicht auf Konvertierungsfähigkeit geprüft werden", "FireEagle-DirectX-Konfiguration", MB_OK | MB_ICONEXCLAMATION); FELogDXError("CheckDeviceFormatConversation", lResult, __FILE__, __LINE__); } } SendMessage(hBackBufferFormatComboBox, CB_ADDSTRING, 0, (long)acsFormatDesc[usFormat]); } return eFEOk; } |