Касательно юниформов в шейдерах

Версия Minecraft
1.7.10
1,173
28
168
Немножк недопонимаю юниформ sampler2D в фрагментном шейдере. Раз юниформ, значит мы должны передавать в него что то. Но что в него передается? int?
ARBShaderObjects.glUniform1iARB(ModShaders.blackWhite.getUniform("sampler2DName"), сюдачто?);
Или этого делать не нужно? А если у меня два юниформа sampler2D? Что делать в этом случае? Просто недопонимание в этом плане, прошу помощи гуру)
Да, в курсе что уменя метод glUniform1iARB, я знаю что он передает в юниформ int, но верно ли это в случае сэмплера?
 
Решение
sampler2D - это текстура. Да, ты можешь держать несколько активных текстур. Передавать туда нужна номер этой текстуры.
Например, тебе нужны две текстуры в шейдере, ты их биндишь:
Java:
GL13.glActiveTexture(GL13.GL_TEXTURE0);
GL11.glBindTexture(GL11.GL_TEXTURE_2D, texture1);
GL13.glActiveTexture(GL13.GL_TEXTURE1);
GL11.glBindTexture(GL11.GL_TEXTURE_2D, texture2);
Собственно когда ты передаешь юниформ в шейдер, ты должен указать айдишник этой текстуры. В данном случае либо 0 либо 1.

Майн использует одновременно две текстуры: обычная(0) и лайтмапа(1).

tox1cozZ

aka Agravaine
8,454
598
2,890
sampler2D - это текстура. Да, ты можешь держать несколько активных текстур. Передавать туда нужна номер этой текстуры.
Например, тебе нужны две текстуры в шейдере, ты их биндишь:
Java:
GL13.glActiveTexture(GL13.GL_TEXTURE0);
GL11.glBindTexture(GL11.GL_TEXTURE_2D, texture1);
GL13.glActiveTexture(GL13.GL_TEXTURE1);
GL11.glBindTexture(GL11.GL_TEXTURE_2D, texture2);
Собственно когда ты передаешь юниформ в шейдер, ты должен указать айдишник этой текстуры. В данном случае либо 0 либо 1.

Майн использует одновременно две текстуры: обычная(0) и лайтмапа(1).
 
Сверху