In meiner App erzeuge ich Mipmaps für die 6x4096x4096 Cube Map Textur. Als nächstes muss ich einige andere Änderungen an dieser Textur vornehmen, die zeitabhängig sind. Die gesamte Zeichnung wird innerhalb der requestAnimationFrame-Schleife ausgeführt.Ist generateMipmap fertig?
Je nach Browser, Gerät usw. dauert es manchmal drei, manchmal vier oder sogar fünf aufeinanderfolgende Frames der Schleife, um schließlich diese Mipmaps zu generieren, und ich muss wissen, in welchem Frame genau Mipmaps bereits fertig sind.
Also die Frage ist: wie in welchen Frame der Anfrage zu überprüfenAnimationFrame-Schleife Mipmaps für die "TEXTURE_CUBE_MAP" durch den WebGL-Befehl generiert "generateMipmap" bereit sind? Gibt es ein Flag zum Überprüfen des Status des Abschlusses "generateMipmap"?
Vielen Dank für Ihre Antwort. Mein Problem liegt nicht in der Reihenfolge der WebGL-Befehle, sondern im Schleifenverhalten des requestAnimationFrames. Nehmen wir an, ich rufe "generateMipmap" bei der Bildnummer 0 auf. Dann würde ich gerne wissen, wie viele Frames benötigt würden, um die Erzeugung der Mipmaps abzuschließen, da ich im letzten dieser Frames die Funktion wie "drawArrays" aufrufen möchte ". Ich muss die genaue Anzahl der Frames nicht im Voraus wissen, sondern muss nur eine Art "if" -Aufgabe verwenden, wenn der Job (Mipmaps erstellen) fertig ist. –
Es gibt keine API dafür. Darüber hinaus kann 'generateMipmap', wie gesagt, gesperrt werden, bis es fertig ist. Auch die Hardware des Benutzers spielt hier eine wichtige Rolle, daher gibt es auch keine Möglichkeit, zuverlässig die Anzahl von Frames zu erhalten, die Mip-Level erzeugen würden. Wenn Sie Mipmaps nicht häufig neu generieren müssen, empfehle ich, die Textur nur im selben Frame (oder vielleicht auch im nächsten Frame) zu verwenden. Wenn Sie die Textur häufig aktualisieren müssen, sollten Sie nach Möglichkeiten suchen, die Verwendung von MipMaping zu vermeiden. –
Der Grund für das, was ich brauche (was auf den ersten Blick seltsam erscheinen mag) ist, dass ich einen Zeitparameter t verwende, den ich an den "DrawArrays" -ähnlichen Aufruf übergebe. Ich muss wissen, wann "generateMipmap" fertig ist (in welchem Frame), so dass ich "drawArrays (t)" den richtigen Wert von t übergeben kann (ich messe die Dauer jedes Frames der Schleife des requestAnimationFrame). –