1

我正在编写一个 GLSL 几何着色器,我正在尝试使用lines_adjacency输入布局,但它不起作用。lines我使用输入布局的第一次通过测试工作正常:

// 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_adjacency输入时它不会画任何东西:

// 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 新手,所以任何帮助将不胜感激,谢谢。

4

1 回答 1

3

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

简而言之,您无法使用邻接几何着色器使用完全相同的属性和索引数据进行渲染。不要介意您的glDraw*电话需要使用GL_LINES_ADJACENCY而不是GL_LINES.

于 2012-04-02T20:28:07.657 回答