2012-04-02 3 views
0

GLSL 지오메트리 셰이더를 쓰고 있는데 입력 레이아웃 lines_adjacency을 사용하려하지만 작동하지 않습니다.lines_adjacency를 사용하는 GLSL 지오메트리 셰이더

// 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 입력으로 전환 할 때 아무것도 그리지 않습니다 다음 lines 입력 레이아웃을 사용하여 내 첫 번째 패스 - 그러나 시험은 잘 작동 내가 실제로 사용하지 않는 알고

// 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 초보자이므로 도움을 주시면 고맙겠습니다. 감사합니다.

답변

2

인접성 데이터를 제공하기 위해 입력 정점을 변경 했습니까? OpenGL은 꼭지점 데이터를 구문 분석하지 않아서 무엇에 인접 해 있는지 파악하지 않기 때문입니다. 인접 유형을 사용하면 인접 정보를 셰이더에 알릴 수 있습니다. 따라서 해당 데이터를 제공해야합니다.

약식으로 인접성 지오메트리 셰이더가있는 동일한 속성 및 인덱스 데이터로 렌더링 할 수 없습니다. glDraw* 호출이 GL_LINES 대신 GL_LINES_ADJACENCY을 사용해야한다는 사실을 염두에 두십시오.

+0

4 점을 GL_LINE_STRIP으로 전달하고 있었는데, 인접성을 암시한다고 가정했습니다. GL_LINES_ADJACENCY에 대해 알지 못했습니다. 다음에 시도해 보겠습니다. – atb

관련 문제