Question

Je voudrais faire un jeu de cubes et de nombreux suis sur la planification mettre sur les plates-formes mobiles et sur le Web en utilisant WebGL. Mon problème est quand je fais un appel par cube drawelements Je prends un coup sur le taux de trame. Est-il possible que je peux faire un seul appel de tirage à opengl es pour les attirer? La seule différence entre les cubes serait position et la couleur.

Était-ce utile?

La solution

Je courais moi en même problème. J'ai demandé la même question et répondu moi-même hier. Jetez un oeil à:

moyen efficace de dessin dans OpenGL ES

Vous souhaitez créer vos tampons de vertex et les télécharger sur la carte mémoire graphique une seule fois à l'aide gl.bufferData. Utilisez ensuite référence à ce tampon chaque fois que vous faites gl.drawElements ou gl.drawArrays. Jusqu'à la prochaine fois que le contenu de vos changements de scène 3D, vous pouvez utiliser ce tampon qui est téléchargé dans la mémoire graphique de la carte.

Autres conseils

Suivez le modèle de UITableView dans la façon dont ils DEQUEUE cellules. Je construirais un objet qui garde la trace des objets que vous avez dessiné et les relie à un identifiant. Ensuite, vous pouvez simplement les dequeue avec ledit identifiant. Si vous savez que vous allez tirer de nombreuses versions du même objet, utilisez cet objet pour minimiser le rendu / allocations.

Si vous utilisez des tableaux Vertex pour vos glDrawElements (), je vous suggère au lieu d'utiliser des objets vertex buffer. Cela va stocker du côté du serveur de données (en GRAM) au lieu de côté client (dans la mémoire vive du système). De cette façon, vous pouvez faire glDrawElements () appelle avec CPU beaucoup moins <->. Les données GPU transfert en tête

Vous pouvez vous stocker des cubes dans les listes êtes les d'affichage. De cette façon, vous pouvez utiliser glTranlate () pour déplacer un cube autour et puis il suffit d'appeler la liste d'affichage pour le rendre. La seule mise en garde à l'utilisation de listes d'affichage est que tout ce que vous faites dans la liste d'affichage est immuable; vous ne pouvez pas modifier les appels dans la liste d'affichage sans complètement recompilée.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top