Je crée un petit jeu/démo graphique 3D pour l'apprentissage personnel. Je sais d3d9 et un peu sur d3d11 mais peu sur opengl pour le moment, donc j'ai l'intention d'abstraire le rendu réel des graphiques de sorte que mon graphique de la scène et tout "au-dessus" il doit savoir peu sur la façon de réellement dessiner les graphiques. J'ai l'intention de le faire fonctionner avec d3d9 puis ajouter le support d3d11 et enfin le support opengl. Juste comme un exercice d'apprentissage pour apprendre sur les graphiques 3D et l'abstraction. Je ne connais pas grand-chose à propos de opengl à ce stade, et je ne veux pas que mon interface abstraite expose tout ce qui n'est pas simple à implémenter dans opengl. Plus précisément, je regarde les tampons de vertex. Dans d3d, ils sont essentiellement un tableau de structures, mais en regardant l'interface opengl, l'équivalent semble être des tableaux de vertex. Cependant, ceux-ci semblent être organisés différemment là où vous avez besoin d'un tableau séparé pour les vertices, un pour les normales, un pour les coordonnées de texture, etc, et avec glVertexPointer, glTexCoordPointer, etcVertex Buffers in opengl
J'espérais pouvoir implémenter une interface VertexBuffer un peu comme le directx mais on dirait que dans d3d vous avez un tableau de structures et en opengl vous avez besoin d'un tableau séparé pour chaque élément qui rend la recherche d'une abstraction commune assez difficile à rendre efficace.
Existe-t-il un moyen d'utiliser opengl de la même manière que directx? Ou des suggestions sur la façon d'arriver à une abstraction de niveau supérieur qui fonctionnera efficacement avec les deux systèmes?
Ah ok c'est logique. Vous devez encore appeler différentes fonctions pour configurer les différentes attributions, mais je devrais être capable de partager une structure avec d3d. Hmm, j'ai vraiment besoin d'en savoir plus sur opengl :) – jcoder
@JB, en fait, si vous allez avec GL3.0, Il introduit des objets de tableau de vertex, qui encapsulent le tout. http://www.opengl.org/registry/specs/ARB/vertex_array_object.txt – Bahbar
Évitez gl..Pointer comme la peste. Utilisez plutôt glVertexAttribPointer. Évitez également d'entrelacer des données (foulées) si vous pouvez l'aider. Enregistrez plutôt les attributs de sommet individuels de manière séquentielle dans un objet tampon. N'oubliez pas de rendre le GPU heureux en alignant les tampons de données. –