Я очень новичок в OpenGL и в шейдерах, и я немного экспериментировал с отправкой нескольких текстур в шейдеры, где заметил что-то странное.
Итак, вот что у меня было. У меня был фрагментный шейдер, который выглядел следующим образом.
#version 440 core
in vec3 vs_position;
in vec3 vs_color;
in vec2 vs_texcoord;
in vec3 vs_normal;
out vec4 fs_color;
uniform sampler2D texture0;
uniform sampler2D texture1;
void main() {
fs_color = texture(texture0, vs_texcoord) * texture(texture1, vs_texcoord);
}
, и в какой-то момент я прекратил отправлять данные для texture1, но забыл удалить код из шейдера. Очевидно, это была ошибка, и программа работала не так, как предполагалось, но я заметил, что цвета выглядели более глубокими и не такими плоскими, когда у меня была эта ошибка, по сравнению с тем, когда я исправлял свой код и удалял материал, связанный с texture1, из шейдера.
Так вот, что у меня было
Теперь я понимаю, что, как только я добавлю правильное освещение и все текстуры больше не будут выглядеть плоскими но я все еще не понимаю, что именно происходит, когда я умножаю данные texture0 (фактуру, которую я фактически установил) на данные texture1 (это не устанавливается).
Что такое значение по умолчанию для sampler2D и что вызывает этот сдвиг цвета?