Frage

Ich habe eine nicht definierte Anzahl von Anzeigekontext und jeder wird eine Textur angezeigt werden soll. Als ich glGenTextures nennen bekomme ich den gleichen Namen in allen Anzeigekontexte zurückgegeben. Ob das funktioniert? Auch wenn sie den gleichen Namen werden sie immer noch speichern und verschiedene Texturen angezeigt werden? Wenn nicht, was tun soll, dies zu umgehen?

War es hilfreich?

Lösung

Immer die gleichen Namen von glGenTexture und mit der gleichen Textur angezeigt ist nicht das Gleiche.

Textur-Namen sind nur ganze Zahlen in einem Ermessen des Kontextes, in der Regel beginnend mit 1, und Erhöhen mit jedem glGenTexture, aber nicht unbedingt so. Eine Implementierung ist nicht so nötig zu arbeiten (obwohl die meisten tun). Aber man könnte theoretisch auch mehr oder weniger „Zufallsgenerator“, wie zum Beispiel eine ganze Zahl erhalten, die für jede Art von Objekt erhöht (also nicht nur Texturen, sondern auch die Puffer und Shadern) oder sogar eine 32-Bit-Zeiger-Adresse in der Adressraum des Fahrers oder eine andere esoterische Sache. Es ist nicht erforderlich, dass ein Name etwas Bestimmtes sein muss.

In Vermächtnis OpenGL, könnten Sie sogar Ihre eigenen Namen machen, anstatt glGenTexture zu verwenden, aber das ist jetzt nicht mehr legal. Ich bin mir nicht sicher, was sie dachten, wenn das war erlaubt, aber trotzdem ...:)

Die gleiche Nummer (Name) in einem anderen Kontext wird in der Regel eine andere Textur sein, oder möglicherweise überhaupt keine Textur. Also, wenn Sie sehen die gleiche Struktur in anderem Zusammenhang mit dem gleichen Textur Namen, dann haben Sie entweder Kontexte gemeinsam, oder der Fahrer ist fehlerhaft.

Beachten Sie, wenn Sie wglCreateContextAttribsARB verwenden, der zweite Parameter das Handle eines bereits bestehenden Kontext (oder null). Wenn Sie hier ein Zusammenhang behandeln liefern, werden Sie Kontexte geteilt auch ohne explizit glShareLists aufrufen. Vielleicht ist das, was durch Zufall passiert ist.

Andere Tipps

Texturen sind nicht (Standard) über Kontexte geteilt -. Sie müssen diese explizit aktivieren, aber wie Sie dies tun, ist plattformspezifisch

Auf win32, es ist wglShareLists, und auf den meisten anderen Plattformen es angegeben wird, wenn Sie den Kontext erstellen (z. B. mit dem share Parameter auf OS-X aglCreateContext).

Mein Wissen habe ich keine Textur Freigabe aktiviert. jedoch die gleiche Struktur in allen Anzeige Kontexte angezeigt werden.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top