2012-02-12 11 views
3

頂点とフラグメントシェーダでうまくレンダリングできる点があるVBOがありますが、パスシェーダをパススルーに追加すると何も表示されません。私はグローのためにMRTを使っていますが、この例では触れません。ジオメトリシェーダを通過できません

私は他の投稿で見たことから、あるステージから別のステージに値を渡すことに問題があるように見えるので、私はすべてのバリエーションを削除しましたが、それでも動作しません。

リンクした後にプログラムのパラメータを設定しました。うまくいけばうまくいきます。

ジオメトリシェーダを無効にすると白いパーティクルが生成されますが、有効にする理由は何も表示されません。

バーテックスシェーダ:

#version 120 
attribute vec3 position; 
uniform mat4 projectionMatrix; 
uniform mat4 modelViewMatrix; 

void main() 
{ 
    gl_Position = projectionMatrix * modelViewMatrix * vec4(position, 1); 
} 

フラグメントシェーダ:

#version 120 

void main() 
{ 
    gl_FragData[0] = vec4(1.f, 1.f, 1.f, 1.f); 
    gl_FragData[1] = vec4(0.f, 0.f, 0.f, 0.f); 
} 

ジオメトリシェーダ:のparamsを設定

#version 120 
#extension GL_EXT_geometry_shader4: enable 

uniform mat4 projectionMatrix; 
uniform mat4 modelViewMatrix; 

void main(void) 
{ 
    for (int i = 0; i < gl_VerticesIn; i++) 
    { 
     gl_Position = gl_PositionIn[i]; 
     EmitVertex(); 
    } 
     EndPrimitive(); 
} 

(プログラムのリンク後、プログラムはresources.particleprogramです) paramsを設定

答えて

3

これらのパラメータは、リンクする前を設定する必要があります(プログラムのリンク後、プログラムはresources.particleprogramです)。

+1

私は最初にそれを試していなかった理由は完全に働いていません。ありがとう。 – starruler

関連する問題