GLSL练习中期

时间:2014-05-15 18:37:56

标签: 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[i];
        gl_Position.xy = gl_Position.yx;
        EmitVertex();
    }
    EndPrimitive(); 
}

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

1 个答案:

答案 0 :(得分:0)

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

着色器的第一部分(以第一个EndPrimitive()结尾)是最简单的直通几何着色器,它几乎不对几何进行任何操作。

第二部分几乎相同,除了xy的混合。它复制了几何图形,但更改了xy坐标,因此它有效地镜像了连接屏幕左下角和右上角的线条上的图像。

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