Как применить шейдер только к определенному объекту сцены?
Это так же, как вы применяете текстуру к определенному объекту.Вы звоните glUseProgram
с программой, которую хотите использовать.Любые последующие команды рендеринга будут использовать эту программу, пока не встретится другой вызов glUseProgram
.
Как объединить несколько эффектов на объект?
В общем, это означает, чтоты пишешь новый шейдер.На самом деле шейдеры - это не то, что вы можете комбинировать с API.Вы можете скопировать их биты в другие шейдеры.Вы можете использовать уникальные возможности парадигмы шейдерного объекта OpenGL , чтобы изменить функциональность программы в зависимости от того, с какими программами связаны какие.
Но в общем случае, если вы хотите объединить несколько "эффекты ", вам нужно написать новый шейдер, в котором есть эти эффекты.