J'aimerais faire un jeu de nombreux cubes et je prévois de la mettre sur des plates-formes mobiles et sur le Web à l'aide de WebGL. Mon problème est que lorsque je fais un appel d'indemnisation par cube, je prends un coup sur le taux de trame. Y a-t-il une façon de faire un appel unique pour OpenGL ES pour les dessiner? La seule différence entre les cubes serait la position et la couleur. P>
3 Réponses :
Suivez le modèle d'UitailView dans la façon dont ils déventent des cellules. Je construirais un objet qui garde une trace des objets que vous avez dessinés et les relie à un identifiant. Ensuite, vous pouvez simplement les résonner avec ledit identifiant. Si vous savez que vous allez dessiner de nombreuses versions du même objet, utilisez cet objet pour minimiser le rendu / les allocations. P>
Si vous utilisez des tableaux de sommet pour vos GLDRAWELES (), je vous suggère d'utiliser des objets de tampon Vertex. Cela stockera le côté du serveur de données (en gram) au lieu du côté client (dans la RAM système). De cette façon, vous pouvez faire des appels de GLDRAWELS () avec beaucoup moins de CPU <-> Transfert de données GPU. P>
Alternativement, vous pouvez stocker vos cubes dans des listes d'affichage. De cette façon, vous pouvez utiliser GLTranLate () pour déplacer un cube autour, puis appelez la liste d'affichage pour le rendre. La seule mise en garde à utiliser des 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 le recompiler complètement. P>
OpenGL ES ne prend pas en charge les listes d'affichage.
J'ai rencontré moi-même dans le même problème. J'ai posé des questions similaires et j'ai répondu moi-même hier. Jetez un coup d'œil à: p>
moyen efficace de dessiner dans OpenGL ES P>
Vous souhaitez créer vos tampons de vertex et les télécharger sur la mémoire de la carte graphique une seule fois avec GL.BufferData. Utilisez ensuite une référence à ce tampon à chaque fois que vous faites gl.Drawelements ou GL.Drawarrays. Jusqu'à la prochaine fois que le contenu de votre scène 3D change, vous pouvez utiliser ce tampon téléchargé dans la mémoire de la carte graphique. P>
Les positions des cubes sont-elles par rapport aux autres pour changer au fil du temps?
Ils vont éventuellement changer au fil du temps comme j'aimerais des objets destructibles.
Voir aussi: Stackoverflow.com/Questtions/9352355/...