Для одной программы (шейдера) вы можете иметь несколько текстур.Обычно вы пишете программу для каждого имеющегося шейдера.Например, в моей игре у меня есть один шейдер (программа) для освещения местности, текстурирования и раскраски.У меня есть еще один шейдер (программа) для воды.
Итак, программы создаются один раз, но я говорю context3d, какую программу использовать перед рисованием сцены.Таким образом он будет рисовать все, что я собираюсь нарисовать с помощью текущей программы.
Пример использования:
context3d.setProgram(WaterShader);
water.drawTriangles();
context3d.setProgram(TerrainShader)
terrain.drawTriangles();
Сначала я рисую воду, а затем ландшафт, каждый из которых использует свой шейдер.,Мой TerrainShader имеет несколько текстур, например, текстуры песка, камня и грязи.Шейдер решает, какую текстуру использовать в данный момент времени.Например, если высота вершины <10, используйте текстуру песка. </p>
Итак, создайте программы один раз и используйте их при необходимости.
Надеюсь, это поможет вам правильно.