Я следую этому уроку , и мне удалось добавить карту куба в мою сцену. Затем я попытался добавить отражения к своему объекту, в отличие от учебника, я сделал свой GLSL-код в пространстве вида. Тем не менее, размышления кажутся немного странными. Они всегда отражают одну и ту же сторону независимо от того, под каким углом вы находитесь, в моем случае вы всегда видите камень на отраженном объекте, но камень находится только на одной стороне моей карты куба. Вот видео, показывающее эффект:
.
Я пробовал с другими объектами в форме, например, с кубом, и эффект тот же. Я также нашел эту книгу , которая показывает пример отражений в пространстве вида, и кажется, что я делаю что-то подобное, но это все равно не приведет к желаемому эффекту. Код моего вершинного шейдера:
#version 330 core
layout (location = 0) in vec3 aPos;
layout (location = 1) in vec3 normal;
layout (location = 2) in vec2 aTexCoord;
uniform mat4 Model;
uniform mat4 View;
uniform mat4 Projection;
out vec2 TexCoord;
out vec3 aNormal;
out vec3 FragPos;
void main()
{
aNormal = mat3(transpose(inverse(View * Model))) * normal;
FragPos = vec3(View * Model * vec4(aPos,1.0));
gl_Position = Projection * vec4(FragPos,1.0);
TexCoord = aTexCoord;
}
Код моего вершины:
#version 330 core
out vec4 FragColor;
in vec3 FragPos;
in vec3 aNormal;
uniform samplerCube skybox;
void main(){
vec3 I = normalize(FragPos);
vec3 R = reflect(I,normalize(aNormal));
FragColor = vec4(texture(skybox,R).rgb,1.0);
}