为了调试我的着色器,我试图显示立方体贴图的正面。 立方体地图是在彼此的顶部上的6面的125x750图像:使用GLKit加载立方体贴图后,iOS上openGL ES 2.0的正确立方体贴图坐标是什么?
首先,我加载立方体地图GLKit:
_cubeTexture = [GLKTextureLoader cubeMapWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"uffizi_cube_map_ios" ofType:@"png"] options:kNilOptions error:&error];
然后我将其加载到着色器:
glActiveTexture(GL_TEXTURE0);
glBindTexture(GL_TEXTURE_CUBE_MAP, self.cubeTexture.name);
glUniform1i(glGetUniformLocation(self.shaderProgram, "cube"), 0);
然后,在片段着色器:
gl_FragColor = textureCube(cube, vec3(-1.0+2.0*(gl_FragCoord.x/resolution.x),-1.0+2.0*(gl_FragCoord.y/resolution.y),1.0));
这将显示这似乎是立方图的顶部的一部分的失真图像:
它不应该被扭曲,并且它应该显示的右表面,而不是顶面。
我无法找到任何描述坐标映射到多维数据集的文档,所以我做错了什么?
这就是我的想法。虽然立方体坐标从-1到1而不是0到1的事实有点令人惊讶。尽管如此,我更新的代码仍然不会产生正确的输出。此代码: vec2 coords = vec2(-1.0 + 2.0 *(gl_FragCoord.x/resolution.x), - 1.0 + 2.0 *(gl_FragCoord.y/resolution.y)); gl_FragColor = textureCube(cube,vec3(coords,1.0)); 产生此输出: http://postimg.org/image/jkqjdz87t/ – xytor 2014-10-03 17:45:19