Я обновляю большую часть своего старого кода OpenGL, включая фрагментный шейдер, и пытаюсь удалить ссылку на gl_FragColor , похоже, не работает.
#version 330
varying vec2 uvs;
uniform vec3 cameraPos;
uniform vec4 brushColor;
uniform sampler2D meshTexture;
uniform sampler2D paintTexture;
uniform int paintFboWidth;
layout(location = 0) out vec4 meshColor; // added this
void main() {
vec2 paintUvs = vec2(gl_FragCoord.x/paintFboWidth, gl_FragCoord.y/paintFboWidth);
float paintIntensity = texture(paintTexture, paintUvs).r;
vec4 meshColor = texture(meshTexture, uvs);
vec3 diffuseColor = mix(meshColor.rgb, brushColor.rgb, paintIntensity);
meshColor = vec4(diffuseColor, 0); // added this
//gl_FragData[0] = vec4(diffuseColor, 0); // trying to remove this
}
Насколько я понимаю, если я переключусь на переменную out , она будет работать, но когда я запишу в meshColor вместо gl_FragData[0] Я не вижу ничего отображенного на экране и ошибки GL.
Нужно ли делать что-либо еще в шейдере или вне его в коде C ++, чтобы использовать эту переменную out?