   how to decide on what technique to render a model with
  I have been writing a Collada Model viewer and one of the requirements is to be able to view multiple models per scene. The viewer supports color, diffuse, normal, specural, cube and reflection mappings. The scene can have as many as 7 models, one for each effect. At runtime I need to execute the appropriate shader for each model in the scene. How do I go about do this?I could have a Model class that holds the technique to be executed at runtime.any input is appreciated :)   
  In my shader file, I have 4 techniques (Basic per-pixel lightning, normal, normal+specular and reflection) Also is there a term associated with using multiple techniques on multiple models?   ;Quote:The scene can have as many as 7 models, one for each effect ...I could have a Model class that holds the technique to be executed at runtime.If the Model "knows" the technique for its effect, you should look at "effect->SetTechnique(...)"   ;  I think using different passes for different types (i.e. normal, normal+specular etc.) may decrease the performance.Also, if you really want the "model" can "decide" what technique will be used, you can try getting vertex declaration of your model mesh and looking for some special declarations in it. For example, if that declaration contains TANGENT, NORMAL and BINORMAL datas, you can switch to NormalMapping (or NormalMapping + Specular, if you want) pass.hth.-R   ;  if its an array of models i would do model.name etc to give them some kind of indentity from 1 another...;  I ended up creating a Model class that "knows" what technique it should use. It is not the best approach but it works for now. I kinda miss xna's content pipeline :)   ;  I have an effect class that loads in a given fx file and loads any given techniques into it. What I then did is create an enumeration for each different shader type, then make an array the size of that enumeration of the effect class so then you have an array of all your different shaders and their techniques.Then after you have processed whatever conditions decide what the models technique should be, you can just use that enumeration to access that shader in the array instantly.If you have techniques like BasicLighting and BasicLightingSpecular you can just append different types of technique onto the base technique for each technique. That's the way I did it and it works pretty well.All you need to do then is when you render each model it holds it's own description of what effect it requires i.e. the shader enumeration and any other information that might be required like what lights acctually shine on the model etc. That way each model has its own shader that can be swapped in whilst drawing.Hope that helps towards a more long term solution.   ;  @MaddiusThat is very close to what I implemented. I have an enumeration in my model class that holds all of the shading techniques. On loading model I calculate the vertexstride, from there I know if it has normals/tangents and what time of technique should be used. I basically collect all the geometries from the Collada file and go through the array of models in the render loop, switching effects as necessary.