Чего я пытаюсь достичь: рисуя карту глубины моей сцены поверх моей сцены (чтобы объекты ближе были темнее, а дальше светлее)
Проблема: мне кажется, я не понимаю, как передать правильные координаты текстуры из моего вершинного шейдера в мой фрагментный шейдер.
Итак, я создал свое FBO и текстуру, к которой рисуется карта глубины ... не то, чтобы я был полностью уверен в том, что я делал, но что угодно, это работает. Я протестировал рисование текстуры с использованием конвейера с фиксированной функциональностью, и оно выглядит так, как должно (карта глубины).
Но попытка использовать его в моих шейдерах просто не работает ...
Вот часть моего метода визуализации, которая связывает текстуру:
glActiveTexture(GL_TEXTURE7);
glBindTexture(GL_TEXTURE_2D, depthTextureId);
glUniform1i(depthMapUniform, 7);
glUseProgram(shaderProgram);
look(); //updates my viewing matrix
box.render(); //renders box VBO
Так что ... я думаю, что это правильно? Может быть? Понятия не имею, почему текстура 7, это было просто то, что было в учебнике, который я проверял ...
И вот что важно из моего вершинного шейдера:
out vec4 ShadowCoord;
void main() {
gl_Position = PMatrix * (VMatrix * MMatrix) * gl_Vertex; //projection, view and model matrices
ShadowCoord = gl_MultiTexCoord0; //something I kept seeing in examples, was hoping it would work.
}
Aaand, фрагментный шейдер:
in vec4 ShadowCoord;
in vec3 Color; //passed from vertex shader, didn't include the code for it though. Just the vertex color.
out vec4 FragColor;
void main(
FragColor = vec4(texture2D(ShadowMap,shadowCoord.st).x * vec3(Color), 1.0);
Теперь проблема в том, что координата, которую фрагментный шейдер получает для текстуры, всегда равна (0,0) или нижнему левому углу. Я попытался изменить его на ShadowCoord = gl_MultiTexCoord7, потому что я подумал, что, возможно, это как-то связано с тем, что я поместил текстуру в слот № 7 ... но, увы, проблема осталась. Когда изменяется цвет (0, 0), меняется и цвет всей сцены, а не меняется цвет только для соответствующего пикселя / фрагмента.
И это то, что я надеюсь получить некоторое представление о ... как передать правильные координаты (я хотел бы, чтобы углы текстуры были такими же координатами, что и углы моего экрана). И да, это вопрос для начинающих ... но я искал в «Оранжевой книге», и проблема с ним в том, что он хорош в аспекте GLSL, но в аспектах OpenGL остро не хватает примеров, которые Я мог бы действительно использовать ...