OpenGL シェーダーでアクセスしたい動的な数の「ボール」があるとします。C++ では、データは次のようになります。
struct Ball
{
glm::vec3 position;
glm:vec3 colour;
float size;
};
std::vector<Ball> all_balls;
フラグメント シェーダーで繰り返し処理する場合all_balls
は、シェーダー ストレージ バッファー オブジェクトが必要になると思います。
このドキュメントは配列に触れていますが、著しく不完全です。
このようにデータをバッファに送信できると思います
glBindBuffer(GL_SHADER_STORAGE_BUFFER, ssbo);
glBufferData(GL_SHADER_STORAGE_BUFFER, all_balls.size() * sizeof(Ball), &(all_balls[0]), usage);
GLSL では、バッファが配列であることを指定するにはどうすればよいですか? また、シェーダはこの配列のサイズをどのように認識しますか?