ジオメトリ シェーダー N (N は 10000 などの非常に大きな数) の頂点を渡して、次のようにレンダリングできるのはなぜですか。
for (int i = 0; i < gl_VerticesIn; ++i) {
gl_Position = projectionmodelview_matrix_ * gl_PositionIn[i];
EmitVertex();
}
...しかし、このような N 個の頂点を生成することはできません (単一の頂点を渡すだけの場合):
for (int i = 0; i < N; ++i) {
float f = float(i);
gl_Position = projectionmodelview_matrix_ * vec4(f, f, f, 1.0);
EmitVertex();
}
OpenGL はどうすればこの 2 つを区別できるのでしょうか?
*注: gl_PositionIn[0] などにアクセスするようにコードを変更しましたが、それでも 2 番目のコードでエラーが発生します。