2012-04-02 6 views
0

GLSLジオメトリシェーダを作成中ですが、lines_adjacency入力レイアウトを使用しようとしていますが、動作しません。私の最初のパス、しかしテストlines入力レイアウトが正常に動作します使用: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入力に切り替えたとき:

// 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

私はGL_LINE_STRIPとして4つのポイントを渡していましたが、これは隣接関係を意味すると仮定しました。私はGL_LINES_ADJACENCYについて知らなかった、私は次にそれを試してみる。 – atb

関連する問題