J'essaie de mesurer le temps nécessaire pour une image dans WebGL pour charger. P>
Je pensais à utiliser GL.Finish () pour obtenir un horodatage avant et après l'image chargée et soustrayant les deux pour obtenir une mesure précise, mais je n'ai pas pu trouver un bon exemple pour ce type d'utilisation. < / p>
Ce genre de chose est possible, et si oui, quelqu'un peut fournir un exemple de code? p>
3 Réponses :
Non, ce n'est pas. P>
En fait in Chrome Étant donné que Chrome est multi-processus et implémente la sécurité en profondeur les appels GL réels sont émis dans un autre processus à partir de votre JavaScript, même si Chrome a appelé Même en dehors de Chrome, chaque pilote gère Il y a des extensions GL sur certains GPU pour obtenir des informations de synchronisation. Malheureusement, ils (a) ne sont pas disponibles dans WebGL et (B) ne seront probablement jamais disponibles comme ils ne sont pas portables car ils ne peuvent pas vraiment travailler sur des GPU carrelés tels que ceux trouvés dans de nombreux téléphones mobiles. P>
Au lieu de demander comment Time GL appelle ce que vous essayez spécifiquement de réaliser en les chronométrant? Peut-être que les gens peuvent suggérer une solution à cela. P> GL.Finish code> est juste un
GL.Flush code>. Voir le code et rechercher "::terminer". p>
GL.Finish code> Cela se produirait dans un autre processus et Du POV de JavaScript ne serait pas précis pour le timing de quelque manière que ce soit de forme ou de formulaire. Firefox est apparemment en train de faire quelque chose de similaire pour des raisons similaires. P>
gl.finish code> différemment. Utilisation de
GL.Finish code> pour la synchronisation n'est pas des informations utiles car il n'est pas représentatif de la vitesse réelle, car il s'agit de caler le pipeline GPU. En d'autres termes, la synchronisation avec
GL.Finish code> comprend beaucoup de frais généraux qui ne se produiraient pas en temps réel et non une mesure précise de la rapidité avec laquelle quelque chose exécuterait des circonstances normales. P>
Je suis vraiment intéressé par le timing que j'essaye d'empreintes digitales un client en fonction du temps de rendu. N'y a-t-il pas d'autre solution pour les événements de timing WebGL?
Peut-être envisager des appels de chronométrage entre les événements de demandaimationframe. Si le temps est trop grand, dessinez moins. Désolé je ne connais pas un bon exemple cependant.
Étant basé sur le client, les horaires d'événement WebGL dépendent de la charge actuelle de la machine client (chargement de la CPU), du chargement GPU et de la mise en œuvre du client lui-même. Un moyen d'obtenir une estimation très approximative, consiste à mesurer la latence ronde du serveur au client à l'aide d'un xmlhttprequest code> (
Comment pouvez-vous utiliser un XMLHTTPEQUEST pour inclure le temps qu'il prend en réalité pour la photo de la charge? (J'ai vu quelque chose appelé surcharge () mais pas sûr de sa pertinence ...). Pouvez-vous fournir une sorte d'exemple de code?
Il est maintenant possible d'exécuter des exécutions WebGL2 avec le Puis plus tard, vous pouvez obtenir le temps écoulé pour votre requête: p> Quelques choses à prendre conscience de: p> ext_disjoint_timer_query_webgl2 code> extension.
Vous avez l'idée générale, alors faites cela ... c'est comme ça que vous obtenez un horodatage dans JavaScript
nouvelle date (). Gettime (); code>
Question connexe ... Est-ce le mécanisme (GL.Finish) utilisé par troisJ ou d'autres cadres et exemples pour montrer aux FPS?
Vous préférez utiliser un profileur car certaines implémentations ignorent ces appels
Si vous essayez de mesurer FPS voir Stackoverflow.com/Questtions/16432804 / enregistrement-fps-in-webgl