2016-11-21 1 views
0

Ich habe das Internet gesucht, konnte aber keine zuverlässige Antwort auf diese Frage finden.OpenGL unter Mac OS X in einem zweiten Thread

Ich habe ein Programm, das einen zweiten Thread spinnt. Von diesem zweiten Thread (der nicht der Hauptthread ist) öffnet er ein GLFW-Fenster und führt alle der OpenGL-Aufrufe aus. Kein anderer Thread führt einen einzelnen OpenGL-Aufruf aus.

Geht das unter Mac OS X gut? Einige Quellen deuteten an, dass OS X OpenGL nur in einem Hauptthread ausführen kann, einige schlagen vor, dass dies nicht der Fall ist, also frage ich mich. (Ich habe keinen Mac, um es selbst zu testen).

Vielen Dank.

Antwort

0

Das wird funktionieren, weil ich das gleiche mit meinem Mac versucht habe. Ich sehe auch nicht, warum es nicht funktionieren sollte. Außerdem, warum versuchst du es nicht einfach? Es sollte sehr kurz sein, einen Testcode zu schreiben, der ein Dreieck oder etwas rendert. Sei vorsichtig bei den Rennbedingungen, wie immer beim Multithreading.

Eigentlich sind neue Grafik-APIs exakt auf diese Schwachstelle angewiesen, während OpenGL Ihren Haupt-Thread blockiert, der andere kann Daten verarbeiten, was Ihnen eine kürzere Nettozeit pro Frame gibt.

Auschecken https://www.khronos.org/vulkan/. Diese API lebt von einer solchen Parallelisierung.

+0

Ich kann nicht versuchen, weil ich keinen Mac habe, aber ich entwickle eine Bibliothek, die auf einem Mac funktionieren sollte. Danke für die Antwort, nur um sicher zu gehen: hast du versucht, ** all ** der OpenGL-Aufrufe im zweiten Nicht-Haupt-Thread zu machen? – faiface