2012-07-22 3 views
1

Quelle est la meilleure façon de charger les données d'image réelles à partir de fichiers .png ou .jpg pour une utilisation dans OpenGL dans Chromes NaCl ??Meilleur moyen de charger des images pour OpenGL dans NaCl

Y at-il une fonctionnalité PPAPI qui peut faire cela? Je ne pensais pas qu'il y en avait.

Je pensais à utiliser javaScript pour charger les données de l'image et les renvoyer à NaCl. Est-ce possible? Si oui, quelle méthode javaScript utilisez-vous pour passer les données de l'image à NaCl, parce que je ne pense pas que postMessage est ce que je veux pour ça?

Frustrant comment il doit y avoir un backend de chargement d'image à Chrome, mais aucun moyen d'y accéder via NaCl.

+0

REMARQUE: j'ai également créé mon propre format qui prend à peu près autant qu'un fichier .png. Il suffit de compresser les données rgba brutes sous forme de zip et de les charger en arrière est le moyen le plus simple de gérer les images perdues pour les textures qui ne prennent pas beaucoup de place. – zezba9000

Répondre

2

Il y a 3 façons de le faire.

  1. Vous pouvez utiliser la bibliothèque nacl-mounts pour charger des fichiers du serveur et les stocker localement pour les utiliser dans votre application. Vous pouvez également voir GetUrl example in nacl sdk pour charger des fichiers à partir du serveur et l'utiliser directement.
  2. Il y a aussi un nouvel exemple dans pepper_21 qui charge la texture et la place dans un cube.
+0

Cette nouvelle démo pepper_21 ... nécessite-t-elle un chargement asynchrone non-stop? Ou pouvez-vous arrêter le thread principal pour charger les données d'image ... C'est le plus gros problème avec NaCl pour moi en ce moment car il n'est pas capable d'arrêter le thread principal pour charger le fichier de données. Rend les applications multi-plateforme une douleur dans le mais à faire. J'ai trouvé une méthode asynchrone en polissant tous les objets de fichiers nécessaires dans une liste, puis en utilisant des flux normaux pour lire la mémoire à partir de là (ce qui fausse les E/S système réelles). Bien que ce soit juste un hack pour les fonctionnalités manquantes dans NaCl. – zezba9000

+0

En fait, il n'existe aucun moyen direct d'arrêter le thread principal dans tous les cas. Comme les fichiers doivent être chargés à partir du serveur, vous ne pouvez pas arrêter le thread principal, ce qui fera que le navigateur restera bloqué pendant un certain temps. Mais vous pouvez simuler facilement en utilisant un thread et un booléen isImagesLoaded. – codetiger

0

Si vous avez le fichier dans Javascript, vous pouvez également créer un URL de blob, puis charger celui de NaCL en utilisant GetUrl comme décrit.

+0

ya, quand je commencerai à faire plus dans NaCl à nouveau, j'utiliserai probablement javaScript pour charger .png, .jpg fichiers ects ... Ecrire maintenant J'ai fait mon propre format d'image appelé .bmpc, fondamentalement un fichier compressé .bmp avec un alpha canal pour remplacer .png. C'est pratiquement la même taille que .png dans la plupart des cas. J'utilise aussi mon propre chargeur pour les fichiers .dds/dxt. – zezba9000

Questions connexes