OpenGL中,有两个颜色附件,第一个颜色附件是渲染用的,第二个颜色附件用于保存对象的ID,这样在做拾取操作的时候就会很快。
但遇到的一个问题是,因为图片有透明度,所以遇到透明的片段就需要丢弃,但是这样ID就不会保存到第二个附件中了。像这种情况该怎么处理,在片段不写入第一个附件的情况下,又将ID写入第二个附件。
#version 330 core
in vec2 TexCoord;
in vec4 TextColor;
uniform sampler2D texture1;
uniform int EnttId;
layout(location = 0) out vec4 color1;
layout(location = 1) out int color2;
void main()
{
color2 = EnttId;
vec4 tmpColor = texture(texture1,TexCoord);
color1 = vec4(TextColor.xyz,tmpColor.r);
if(color1.a < 0.01)
{
discard;
}
}