如何在片段着色器中使用不同的颜色输出?Qt/OpenGL着色器问题
说,我vshader看起来是这样的:
#version 330
uniform mat4 mvpmatrix;
layout(location=0) in vec4 position;
layout(location=1) in vec2 texcoord;
out vec2 out_texcoord;
void main()
{
gl_Position = mvpmatrix * position;
out_texcoord = texcoord;
}
// fshader
#version 330
uniform sampler2D texture;
in vec2 out_texcoord;
out vec4 out_color;
out vec4 out_color2;
void main()
{
out_color = texture2D(texture, out_texcoord);
// out_color2 = vec3(1.0, 1.0, 1.0, 1.0);
}
访问他们像这样:
m_program->enableAttributeArray(0); // position
m_program->setAttributeBuffer(0, GL_FLOAT, 0, 3, sizeof(Data));
m_program->enableAttributeArray(1); // texture
m_program->setAttributeBuffer(1, GL_FLOAT, sizeof(QVector3D), 2, sizeof(Data));
到目前为止,一切使用的默认输出片段着色器,这是一个纹理。但是如何访问不同的片段输出?我也必须使用布局吗?而且,它可能是一个愚蠢的问题......但是vshader/fshader的布局位置是相互绑定的吗?所以,如果我在AttributeArray(1)上启用我的缓冲区,我不得不使用两个着色器的布局位置1?
Okey ...我已经过了,感谢分享! – danksch