0
我尝试在渲染到纹理的平面上模拟反射。 我唯一的问题是如何正确地将纹理坐标调整到当前视图。opengl对齐纹理坐标
在着色器中,我将纹理坐标乘以旋转矩阵。 旋转矩阵设置有:
glm::vec3 v1 = glm::vec3(0.0f,1.0f,0.0f);
glm::vec3 v2=glm::vec3(camlocation[0],camlocation[1],0.0);
if(glm::length(v2)!=0.0f)
{
v2=glm::normalize(v2);
}
float alpha=glm::angle(v1,v2);
texturematrix=glm::mat4(1.0f);
texturematrix = glm::translate(texturematrix,glm::vec3(0.5f,0.5f,0.0f));
texturematrix = glm::rotate(texturematrix,alpha,glm::vec3(0.0f,0.0f,1.0f));
texturematrix = glm::translate(texturematrix,glm::vec3(-0.5f,-0.5f,0.0f));
我不知道它的正确方法,但反射看起来是错误的。
编辑:
步骤1:我结合一个帧缓冲和我的反射纹理和渲染我的模型,例如茶壶。 在着色器中反转Z位置。
第2步:我再次绑定纹理并绘制平面。在着色器,我使用
vec4 texcoord = texturematrix*vec4(VertexIn.texcoord,1.0,1.0);
vec4 firsttex = texture(reflectionMap,texcoord.xy);
第3步:我画的真实模型
你能细说场景是如何构建的,要镜像和你呈现给你的纹理什么什么?' – 2014-12-05 15:05:11