Maintenant quand il parle de nouvelles fonctionnalités, cela implique surtout que l'API Direct3D a intégré des facilités dans son interface. Supposons qu'aucune des API ne savait faire des boules. Puis notre bonne API se dit: tiens, je vais intégrer un algorithme pour faire une boule et j'encapsule ça dans une fonction que j'appelerai ball(r). On peut maintenant faire des boules en une ligne de code. De son côté la mauvaise API n'a pas la fonction encore. Cela ne signifie pas que les développeurs ne peuvent pas faire de boule. Simplement ils sont obligés de calculer eux même ses limites, puis les remplir (avec d'autres types d'objets que l'API sait faire). C'est donc chiant. C'est en gros, ce qu'ils disent dans l'article là:
While newer versions of OpenGL have kept up-to-date with some of the features found in DirectX, including DirectX 10's geometry shader, they usually have to be implemented via extensions, rather than the main API.
Désolé mais tu ne peux pas affirmer que l'on peut contourner l'absence d'un certain type de shader. Les shader représentent la capacité de progerammer certaines parties du pipeline de la carte graphique, et si tu n'en disposes pas, la seule chose que tu puisses faire pour les remplacer, c'est coder leur effet sur le CPU, ce qui va vraiment impacter tes performances. En l'occurence là, les geometry shaders permettent de re-tesseler un mesh à la volée, ie d'augmenter de façon contrôlée et performante le niveau de détails. Sans ça tu es obligé de stocker/charger/envoyer à la CG des meshs bien plus gros (et vu qu'un des bottlenecks typique c'est le transfert de données entre la mémoirex hoost et celle de la CG, bah tu perds vraiment en perfs pour la même qualité visuelle.
Et quand on parle de pouvoir implémenter quelquechose via les extensions, généralement ça veut dire que ça va pas passer dans toutes les cartes graphiques. Alors c'est très cool si tu développes en interne, parce que tu sais exactement quelles extensions tu peux utiliser, mais pour distribuer, bah tu peux pas te rendre incompatible avec une trop grande partie du marché.
[^] # Re: Meilleure interface de développement, pas forcément meilleure 3D
Posté par Shuba . En réponse au journal Direct3D vs OpenGL. Évalué à 2.
Désolé mais tu ne peux pas affirmer que l'on peut contourner l'absence d'un certain type de shader. Les shader représentent la capacité de progerammer certaines parties du pipeline de la carte graphique, et si tu n'en disposes pas, la seule chose que tu puisses faire pour les remplacer, c'est coder leur effet sur le CPU, ce qui va vraiment impacter tes performances. En l'occurence là, les geometry shaders permettent de re-tesseler un mesh à la volée, ie d'augmenter de façon contrôlée et performante le niveau de détails. Sans ça tu es obligé de stocker/charger/envoyer à la CG des meshs bien plus gros (et vu qu'un des bottlenecks typique c'est le transfert de données entre la mémoirex hoost et celle de la CG, bah tu perds vraiment en perfs pour la même qualité visuelle.
Et quand on parle de pouvoir implémenter quelquechose via les extensions, généralement ça veut dire que ça va pas passer dans toutes les cartes graphiques. Alors c'est très cool si tu développes en interne, parce que tu sais exactement quelles extensions tu peux utiliser, mais pour distribuer, bah tu peux pas te rendre incompatible avec une trop grande partie du marché.