Multithread-OpenGL-Zeichnungsstrategien
Die GDI unterstützt nicht mehrere Threads. Sie müssen einen eindeutigen Gerätekontext und einen eindeutigen Renderingkontext für jeden Thread verwenden. Dies führt dazu, dass die Leistungsvorteile durch die Verwendung mehrerer Threads mit Einzelprozessorsystemen, auf denen OpenGL-Anwendungen ausgeführt werden, eingeschränkt 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.
SMP-Systeme (Symmetric Multiprocessing) können von der Verwendung mehrerer Threads erheblich profitieren. Eine offensichtliche Strategie ist die Verwendung eines separaten Threads für jeden Prozessor, um 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, ihre Verwendung zu synchronisieren. Verwenden Sie beispielsweise nur einen Thread, um SwapBuffers aufzurufen, nachdem alle Threads das Zeichnen abgeschlossen haben.