Reflection OpenGL环境映射反射

Reflection OpenGL环境映射反射,reflection,opengl-es,opengl-es-2.0,Reflection,Opengl Es,Opengl Es 2.0,我的想法是错误的。我已经修改了很多代码,但是我没有发现错误。如果你能帮助我,那就太好了 纹理生成: 代码: m_cubeMap=新整数[1]; m_cubeFB=新整数[1]; //创建立方体贴图 glGenTextures 1,m_立方体映射,0; glBindTexture GL_纹理_立方体_贴图,m_立方体贴图[0]; 对于int i=0;i

我的想法是错误的。我已经修改了很多代码,但是我没有发现错误。如果你能帮助我,那就太好了

纹理生成: 代码:

m_cubeMap=新整数[1]; m_cubeFB=新整数[1]; //创建立方体贴图 glGenTextures 1,m_立方体映射,0; glBindTexture GL_纹理_立方体_贴图,m_立方体贴图[0]; 对于int i=0;i<6;i++{ glTexImage2D GL_纹理Glu立方体Glu贴图Glu正X+i,0,GL_RGBA,m_立方体贴图,m_立方体贴图,0,GL_RGBA,GL_无符号字节,null; } glTexParameteri GL_纹理(立方体)贴图,GL_纹理(包裹),GL_夹紧(到边);; glTexParameteri GL_纹理(立方体)贴图,GL_纹理(包裹),GL_夹紧(到边);; glTexParameteri GL_纹理(立方体)贴图,GL_纹理(最小)过滤器,GL_线性;; glTexParameteri GL_纹理立方体贴图,GL_纹理贴图过滤器,GL_线性; glGenFramebuffers 1,m_cubeFB,0; glBindFramebuffer GL_FRAMEBUFFER,m_cubeFB[0]; glFramebufferTexture2D GL_帧缓冲区,GL_颜色_附件0,GL_纹理_立方体_贴图_正片_X,m_立方体贴图[0],0; 如果LoggerConfig.ON checklerror InitRefCubeMap; //检查状态 如果glCheckFramebufferStatus GL_FRAMEBUFFER!=GL\u帧缓冲区\u完成{ 如果LoggerConfig.ON Log.e MESH,立方体映射帧缓冲区不完整:+glCheckFramebufferStatus GL\u Framebuffer; 回来 } //glBindRenderbuffer GL_RENDERBUFFER,0; glBindFramebuffer GL_帧缓冲区,0; glBindTexture GL_纹理_立方体_贴图,0; 迭代所有面0=6并在此之后绘制: 代码:

glFramebufferTexture2D GL_帧缓冲区,GL_颜色_附件0,GL_纹理_立方体_贴图_正X+p_面,m_立方体贴图[0],0; glClearColor 0.0f、0.0f、0.0f、1.0f; glClear GL_颜色_缓冲_位; 如果LoggerConfig.ON 选中箭头DrawRefCubeMap激活面+p_面; 浮点mvMatrix[]=新浮点[16]; 开关p_面{ 阳性病例(X): setLookAtM mvMatrix,0, 0.0f,0.0f,0.0f, 1.0f,0.0f,0.0f, 0.0f,1.0f,0.0f; 打破 大小写为阴性的X: setLookAtM mvMatrix,0, 0.0f,0.0f,0.0f, -1.0f,0.0f,0.0f, 0.0f,1.0f,0.0f; 打破 阳性病例(Y): setLookAtM mvMatrix,0, 0.0f,0.0f,0.0f, 0.0f,1.0f,0.0f, 0.0f,0.0f,1.0f; 打破 病例阴性(Y): setLookAtM mvMatrix,0, 0.0f,0.0f,0.0f, 0.0f,-1.0f,0.0f, 0.0f,0.0f,1.0f; 打破 正例_Z: setLookAtM mvMatrix,0, 0.0f,0.0f,0.0f, 0.0f,0.0f,1.0f, 0.0f,1.0f,0.0f; 打破 大小写负数_Z: setLookAtM mvMatrix,0, 0.0f,0.0f,0.0f, 0.0f,0.0f,-1.0f, 0.0f,1.0f,0.0f; 打破 违约: 回来 }; 平移矩阵,0,-m_立方中心[0],-m_立方中心[1],-m_立方中心[2]; float projMatrix[]=新的float[16]; 透视图项目矩阵,0,90.0f,1.0f,0.01f,100.0f;//近剪裁平面尺寸是否足够? 浮动MVP矩阵[]=新浮动[16]; 多重矩阵MVP矩阵,0,projMatrix,0,mvMatrix,0; 浮动[]MVU矩阵_In=新浮动[16]; float[]normalMat=新的float[16]; 反转M MVMatrix_In,0,MVMatrix,0; transpossem normalMat,0,MVMatrix_In,0; glUniformMatrix4fv m_simplePhongShader.m_uMVMatrix,1,false,mvMatrix,0; glUniformMatrix4fv m_simplePhongShader.m_uMVPMatrix,1,false,mvpMatrix,0; glUniformMatrix4fv m_simplePhongShader.m_非正态矩阵,1,false,normalMat,0; 使用的Fragement着色器世界位置: 代码:

vec3 camRay=标准化v_PosW-u_摄像中心; vec3 wNormal=标准化v_NormalW; gl_FragColor=纹理u_立方贴图,标准化反射camRay,wNormal; 谢谢大家!

更新1 屏幕截图:未反射的球体不会反射到另一个球体中

您能发布结果截图吗?谢谢您的回复。我添加了两个反射球体的屏幕截图。您是否尝试移动非反射球体?此外,您还可以尝试将所有正面的多维数据集映射转储到文件并查看它。您将了解立方体贴图创建代码或反射代码中的问题所在。