Geometry 实习期中

Geometry 实习期中,geometry,glsl,shader,Geometry,Glsl,Shader,我在期中练习时遇到了这个问题,我不明白 void main(void){ int i; for(i=0; i< gl_VerticesIn; i++){ gl_Position = gl_PositionIn[i]; EmitVertex(); } EndPrimitive(); for(i=0; i< gl_VerticesIn; i++){ gl_Position = gl_PositionIn

我在期中练习时遇到了这个问题,我不明白

void main(void){
    int i;
    for(i=0; i< gl_VerticesIn; i++){
        gl_Position = gl_PositionIn[i];
        EmitVertex();   
}
    EndPrimitive();
    for(i=0; i< gl_VerticesIn; i++){
        gl_Position = gl_PositionIn[i];
        gl_Position.xy = gl_Position.yx;
        EmitVertex();
    }
    EndPrimitive(); 
}
void主管道(void){
int i;
对于(i=0;i

我一直在阅读文档,我认为这是几何体着色器的一部分,我认为这是反转每个点的x和y坐标,但我没有任何方法来验证这一点。我试着在一个程序中检查它,它在场景的颜色上略有不同,但它似乎根本没有改变几何体,所以如果有人能帮助解释这一点,那就太棒了。谢谢

这确实是几何体着色器的一部分

着色器的第一部分(以第一个
EndPrimitive()
结尾)是可能的最简单的穿透几何体着色器,对几何体完全不做任何操作

第二部分几乎相同,除了用
xy
旋转。它复制几何体,但更改
x
y
坐标,因此它有效地在连接屏幕左下角和右上角的直线上镜像图像

因此,在屏幕的对角线上复制和镜像几何体