我有一个相当简单的碎片器无效。它似乎与textureCube方法有关。
这是片段着色器:
in vec3 ReflectDir;
in vec3 RefractDir;
uniform samplerCube CubeMapTex;
uniform bool DrawSkyBox;
uniform float MaterialReflectionFactor;
void main()
{
// Access the cube map texture
vec4 reflectColor = textureCube(CubeMapTex, ReflectDir);
vec4 refractColor = textureCube(CubeMapTex, RefractDir);
if( DrawSkyBox )
{
gl_FragColor = reflectColor;
gl_FragColor = vec4(ReflectDir, 1); //This line
}
else
gl_FragColor = vec4(1,0,0,1);
}
ReflectDir和RefractDir来自顶点着色器,但这似乎是有序的。
如果我在if语句中注释第二行,整个屏幕都是黑色的(包括茶壶),否则它看起来像这样(ReflectDir似乎没问题):
http://i.imgur.com/MkHX6kT.png
此外,立方体贴图也能正确呈现(图像顺序很差)。这是没有着色器程序时场景的样子:
http://i.imgur.com/6kKzA2x.jpg
有条件的信息: