ポイントを含むVBOがあり、頂点シェーダーとフラグメントシェーダーでうまくレンダリングできますが、パススルージオメトリシェーダーを追加しても何も表示されません。グローにMRTを使用していますが、この例では触れていません。
他の投稿で見たところ、あるステージから別のステージへの値の受け渡しに問題があるように思われるので、すべてのバリエーションを削除しましたが、それでも機能しません。
リンク後にプログラムパラメータを設定しました-うまくいけば大丈夫です。
ジオメトリシェーダーを無効にすると白いパーティクルが生成されるのに、有効にすると何も表示されない理由はありますか?
VERTEXシェーダー:
#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);
}
ジオメトリシェーダー:
#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です)
glProgramParameteriEXT(resources.particleprogram, GL_GEOMETRY_INPUT_TYPE_EXT, GL_POINTS);
glProgramParameteriEXT(resources.particleprogram, GL_GEOMETRY_OUTPUT_TYPE_EXT, GL_POINTS);
glProgramParameteriEXT(resources.particleprogram, GL_GEOMETRY_VERTICES_OUT_EXT, 4);