使用线_邻接的GLSL几何体着色器

使用线_邻接的GLSL几何体着色器,glsl,geometry-shader,Glsl,Geometry Shader,我正在编写一个GLSL几何体着色器,我正在尝试使用lines\u Adjacence输入布局,但它不起作用。我的第一次通过测试使用行输入布局,效果良好: // GLSL GEOMETRY SHADER #version 410 layout (lines) in; layout (line_strip, max_vertices = 2) out; void main () { gl_Position = gl_in[0].gl_Position; EmitVertex();

我正在编写一个GLSL几何体着色器,我正在尝试使用
lines\u Adjacence
输入布局,但它不起作用。我的第一次通过测试使用
输入布局,效果良好:

// GLSL GEOMETRY SHADER
#version 410

layout (lines) in;
layout (line_strip, max_vertices = 2) out;

void main ()
{
    gl_Position = gl_in[0].gl_Position;
    EmitVertex();
    gl_Position = gl_in[1].gl_Position;
    EmitVertex();
    EndPrimitive();
}
但当我切换到
lines\u Adjacence
input时,它不会绘制任何内容:

// GLSL GEOMETRY SHADER
#version 410

layout (lines_adjacency) in;
layout (line_strip, max_vertices = 2) out;

void main ()
{
    gl_Position = gl_in[1].gl_Position;
    EmitVertex();
    gl_Position = gl_in[2].gl_Position;
    EmitVertex();
    EndPrimitive();
}

我知道我实际上没有在这里使用邻接点,但我最终会需要它们。我是GLSL新手,因此非常感谢您的帮助。

您确实更改了输入顶点以提供邻接数据,对吗?因为OpenGL不会解析你的顶点数据来找出什么与什么相邻。邻接类型的存在允许您告诉着色器有关相邻信息。所以你必须提供这些数据


简而言之,不能使用完全相同的属性和索引数据使用邻接几何体着色器进行渲染。尽管您的
glDraw*
调用需要使用
GL\u线\u邻接
而不是
GL\u线

我作为GL\u线带传入四个点,但我认为这意味着邻接。我不知道GL_线_邻接,下一步我会试试。