Multithread-OpenGL-Zeichnungsstrategien
Der GDI unterstützt nicht mehrere Threads. Sie müssen einen unterschiedlichen Gerätekontext und einen separaten Renderingkontext für jeden Thread verwenden. Dies schränkt in der Regel die Leistungsvorteile der Verwendung mehrerer Threads mit Einzelprozessorsystemen ein, auf denen OpenGL-Anwendungen ausgeführt werden. Es gibt jedoch Möglichkeiten, Threads mit einem einzelnen Prozessorsystem zu verwenden, um die Leistung erheblich zu steigern. Beispielsweise können Sie einen separaten Thread verwenden, um OpenGL-Renderingaufrufe an dedizierte 3D-Hardware zu übergeben.
Symmetrische Multiprocessing-Systeme (SMP) können von der Verwendung mehrerer Threads profitieren. Eine offensichtliche Strategie besteht darin, einen separaten Thread für jeden Prozessor zu verwenden, um das OpenGL-Rendering in separaten Fenstern zu verarbeiten. In einer Flugsimulationsanwendung können Sie beispielsweise separate Prozessoren und Threads verwenden, um die Front-, Back- und Seitenansichten zu rendern.
Ein Thread kann nur einen aktuellen aktiven Renderingkontext aufweisen. Wenn Sie mehrere Threads und mehrere Renderingkontexte verwenden, müssen Sie darauf achten, deren Verwendung zu synchronisieren. Verwenden Sie beispielsweise nur einen Thread, um SwapBuffers aufzurufen, nachdem alle Threads die Zeichnung abgeschlossen haben.