0
以下是片段着色器的代碼,用於在地板和球體上生成紋理,並在其上方生成霧效果。片段着色器寫入超過1個輸出的錯誤
我得到一個錯誤,說「片段着色器寫入多於一種類型的輸出gl_FragData,gl_FragColor或用戶綁定的碎片數據。」當我嘗試編譯它。
out vec4 color;
out vec2 texCoord;
uniform int fogType;
uniform int enableFloorTexture;
uniform int sphereTexture;
uniform int objectType;
uniform sampler2D texture;
uniform sampler1D stexture;
void main()
{
vec4 finColor = color;
if (objectType == 1)
{
if(enableFloorTexture == 1)
{
finColor = color * texture2D(texture, texCoord);
}
}
else if (objectType == 2)
{
if(sphereTexture != 0)
{
finColor = color * texture1D(stexture, texCoord.x);
}
}
float fogFactor = 0.0;
float fogDepth = (18.0 - 0.0);
float fogDensity = 0.09;
vec4 fogColor = vec4(0.7, 0.7, 0.7, 0.5);
float z = gl_FragCoord.z/gl_FragCoord.w;
if(fogType == 1)
{
fogFactor = (18.0 - z)/fogDepth;
}
else if (fogType == 2)
{
fogFactor = exp(-fogDensity * z );
}
else if (fogType == 3)
{
fogFactor = exp(-fogDensity * fogDensity * z * z);
}
fogFactor = clamp(fogFactor, 0.0, 1.0);
if(fogType == 0)
{
gl_FragColor = finColor;
}
else
{
gl_FragColor = mix(fogColor, finColor, fogFactor);
}
}
嘗試這樣做。該程序不斷崩潰。沒有變化 – ke1411
嗯。我會註釋掉大部分代碼,直到它編譯並且不會崩潰。然後取消註釋代碼,直到它再次破壞。希望在你取消註釋時會有一條線索...... –