使用GL_TRIANGLES_ADJACENCY_EXT的曲面细分和几何着色器

时间:2014-08-05 09:35:02

标签: opengl geometry-shader tessellation

我有一个小程序可以从一些SRTM数据中渲染地形。

我正在玩glsl新功能。 我已成功创建了vs,tcs,tes,gs和fs,其中gs只是通过着色器传递:

#version 430
layout(triangles_adjacency) in;
layout(triangle_strip, max_vertices = 3) out;

void main(void) {
    for (int i = 0; i < gl_in.length(); ++i) {
        gl_Position = gl_in[i].gl_Position;
        EmitVertex();
    }
    EndPrimitive();
}

现在,在tcs和tes我添加更多三角形,我需要计算新法线,所以我认为我必须使用triangles_adjacency选项计算gs,所以我可以访问4个三角形的六个顶点。 但是当我改变代码时:

#version 430
layout(triangles_adjacency) in;
layout(triangle_strip, max_vertices = 3) out;

void main(void) {

    gl_Position = gl_in[0].gl_Position;
    EmitVertex();

    gl_Position = gl_in[2].gl_Position;
    EmitVertex();

    gl_Position = gl_in[4].gl_Position;
    EmitVertex();

    EndPrimitive();

}
什么都没画。我知道,如果我有镶嵌活动,我必须在绘图数组中使用GL_PATCHES(我用这种方式制作)但我不明白我能做些什么才能看到这个gs的工作。

然而,我的目标是在曲面细分后计算新的法线;谁能最终帮助我计算它们?

0 个答案:

没有答案