OpenGL Discussion et Aide Forums

Shader Toon avec texture. Cela peut-il être optimisé?

Je suis tout à fait nouveau pour OpenGL, j'ai réussi après une longue tâtonnement d'intégrer Cel-Shading de Nehe rendu avec mes chargeurs de modèle, et les ont dessinés à l'aide de l'ombre Toon et les grandes lignes et leur texture d'origine en même temps. Le résultat est en fait un très bel effet Cel Shading de la texture du modèle, mais il est havling la vitesse du programme, il est tout à fait très lent même avec seulement trois modèles à l'écran.







Les deux fonctions MD2 et le chargeur 3DS ont une InitToon () appelée lors de la création pour charger le shader


Ceci est le dessin pour le modèle MD2 animé:

Considérant que ceci est la fonction drawToon dans le chargeur 3DS


Enfin, c'est la fonction tex.Use () qui charge une texture BMP et obtient en quelque sorte mélangé parfaitement avec l'ombrage Toon






Re: Shader Toon avec texture. Cela peut-il être optimisé?

Comment pourrais-je aller sur l'envoi de ces sommets au vertex shader comme vous avez dit?

Re: Shader Toon avec texture. Cela peut-il être optimisé?

Voici un autre essai, celui-ci utilise un tableau dynamique intercalés au lieu de trois std :: vecteurs. Une meilleure performance, de 15FPS à 25FPS maintenant avec quelques modèles à l'écran. C'est le nouveau, y compris le code Cel-shading. est-ce que optimisé que je peux obtenir sans utiliser vertex shaders?


Merci encore pour vos suggestions utiles

Re: Shader Toon avec texture. Cela peut-il être optimisé?

Comme dit Alphonse, il est certainement préférable de faire le calcul de mélange dans le vertex shader.

Et si les modèles de vos produits sont relativement smalls, je pense que les regrouper dans le même tableau de vertex, au lieu de faire un glEnableClientState / gl * Pointer / Cycle glDisableClientState pour chacun d'eux, peut avoir un impact sur les performances.

Et seulement faire le glEnable / glHint / glBlendFunc / glCullFace / glDepthFunc et d'autres glBindTexture appelle à l'initialisation, cf. de ne pas faire la même chose pétantes pour chaque objet car ils utilisent toujours les mêmes « constantes » états
(Je vois que vous utilisez deux passes, donc vous devez utiliser une autre initialisation pour chaque passage, mais où chaque affichage passe modèles ELCA de cours)