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
Zitat von »"Databyte"«
Und da wollt ich mal Fragen, wie andere Spiele das machen, die beim
Laden immer noch irgendwelche videos zeigen, wie zum Beispiel C&C Generals oder Assassin's Creed ?
Zitat von »"Zero"«
Naja würde ich auch sagen, einfach alles in einem Thread laufen lassen und da die Daten in den Ram laden und dann aber im Mainthread die Daten an die Graka senden. Denn wenn man DX auf Multithreading stellt soll es nicht sehr schnell sein.
Zitat von »"TrikkieMikkie"«
Zitat von »"Zero"«
Naja würde ich auch sagen, einfach alles in einem Thread laufen lassen und da die Daten in den Ram laden und dann aber im Mainthread die Daten an die Graka senden. Denn wenn man DX auf Multithreading stellt soll es nicht sehr schnell sein.
Das ist wohl (laut DirectX-Doku) richtig, dass die Performance etwas runtergeht.
Allerdings geht es auch ohne das Multithreading-Flag.
Also muss man deswegen nicht gleich Single-Thread fahren.
Die Anzahl der Threads werden sich in Databytes Anwendung wohl auch in Grenzen halten.
Denke ich mal.
C-/C++-Quelltext |
|
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 |
#define WIN32_LEAN_AND_MEAN // Kein MFC Zeugs *arg* #include <windows.h> #include <windowsx.h> #include <stdio.h> // -------------------------------------------------------------------------------------------- // ============================================================================================ // Definitionen // ============================================================================================ #define MAX_THREADS 3 // -------------------------------------------------------------------------------------------- // ============================================================================================ // Funktionen // ============================================================================================ DWORD WINAPI ThreadFunc(LPVOID data) { // Gibt 50 ein Zeichen mit einer Verzögerung aus for (int index=0; index<50; index++) { printf(" Thread: %d ",(int)data); printf(" Index: %d " ,index); // Wert ausgeben Sleep(100); // Verzöger ein bisschen das ganze } // end for index // gibt den Wert zurück den du bekommen hast return((DWORD)data); } // end ThreadFunc // -------------------------------------------------------------------------------------------- void main(void) { HANDLE hThread[MAX_THREADS]; // Handles auf die Threads DWORD dwThreadID[MAX_THREADS]; // IDs der Threads printf("\nAlle Threads starten...\n"); // Alle Threads starten for (int index=0; index<MAX_THREADS; index++) { hThread[index] = CreateThread(NULL, // Sicherheitsinfos 0, // Größe des Stack ThreadFunc, // Threadfunktion (LPVOID)index, // 32-bit paramter der Threadfunktion übergeben wird 0, // Creation Flags, 0=sofort starten. &dwThreadID[index]); // Id speichern } // end for index // Hauptthread gibt nun auch Zeichen aus; Nur 25 dadurch weniger als die erzeugten Threads for (int index=0; index<25; index++) { printf(" Main "); Sleep(100); } // end for index // Auf die Threads warten, bis sie fertig sind WaitForMultipleObjects( MAX_THREADS, // Anzahl der Threads, auf die gewartete werden muss hThread, // Handles der Threads TRUE, // Für alle warten? INFINITE); // Wie lange soll gewartet werden, INFINITE = unendlich lange // Alle Threads sollten beendet sein for (int index=0; index<MAX_THREADS; index++) CloseHandle(hThread[index]); printf("\nAlle Threads beendet.\n"); Sleep(100000); } // end main // -------------------------------------------------------------------------------------------- |
Werbeanzeige