3

ポイントを含む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);
4

1 に答える 1

3

パラメータの設定(プログラムリンク後、プログラムはresources.particleprogram)

これらのパラメータは、リンクする前に設定する必要があります。

于 2012-02-13T01:13:27.713 に答える