2012-11-16 4 views
1

J'utilise la librairie three.js pour travailler dans WebGL. Dans mon cas, j'ai deux objets dans ma scène, j'aimerais mettre à jour mes objets sur l'écran de manière indépendante. J'utilise des shaders pour modifier la couleur de mes objets, je voudrais modifier la valeur d'un paramètre uniforme de mon fragment shader et appliquer le shader uniquement sur un de mes objets. Je voudrais appliquer un "drawElements" sur mon mesh et le dessiner avec le nouveau paramètre. Quand je fais "renderer.render (scene, camera);" Je mets à jour tous les objets, et ce n'est pas ce que je veux. Comment puis-je faire cela? Pourrais-tu m'aider s'il te plait ?Mettre à jour un objet et un seul, sur l'affichage

Répondre

0

Si vous utilisez une version antérieure à la version R.53, vous avez besoin de cloner vos uniformes pour votre deuxième shaders:

shaderB = shaderA.clone(); 
shaderB.uniforms = THREE.UniformsUtils.clone(shaderA.uniforms); 

Un meilleur choix est de mettre à jour à la version actuelle, R.53. Dans ce cas, le clonage des uniformes est fait pour vous, et ce qui suit devrait être suffisant:

shaderB = shaderA.clone(); 
+0

Merci pour votre réponse, je travaille avec la dernière version (version r53). C'est une bonne idée, donc mon objet a son propre shader mais après quand je veux juste en redessiner un, alors comment puis-je le faire? Si j'utilise le rendu, je réutiliserai tous mes objets, non? – lanfeustXIII

+0

J'essaie de comprendre votre question ... 1. Est-il vrai que chaque objet a son propre shader, et que tous les shaders fonctionnent correctement? 2. Est-il vrai que vous voulez re-rendre l'écran, mais seulement redessiner l'un des objets? Est-ce que les objets se chevauchent sur l'écran? – WestLangley

+0

En fait j'essaie d'adapter ce code (http://egraether.com/demos/booleans.html) pour être compatible avec THREE.js.Comme je l'ai dit j'ai deux objets et je voudrais appliquer une soustraction entre eux. Ce code utilise des shaders et fait la soustraction booléenne en utilisant un gabarit GL et des tampons de profondeur. Concernant ma première question, il s'agissait du rendu des objets qui est appliqué dans l'exemple, il redessine à chaque fois un seul objet et pas les deux. commander avec quelques modifications pour créer la soustraction. Je rencontre quelques difficultés pour adapter ce code à three.js et particulièrement pour redessiner seulement 1 objet. – lanfeustXIII

Questions connexes