如何在片段着色器中使用不同的顏色輸出?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