boost::variantでデータ構造を書き換え
boost::variantを利用してシェイプクラスを抽象的にします。
typedef boost::variant<Sphere,Plane> Shape; enum SHAPE_TYPE { SHAPE_TYPE_SPHERE, SHAPE_TYPE_PLANE, }; struct Scene { std::vector<Shape> shapes; std::vector<Vector3> directionalLights; };
関数型言語に慣れ始めると、こういうデータ構造のほうが扱いやすくて有難い。昔のC++脳だったら間違いなく親クラスでShapeクラスを作ってSphereとかPlaneとかを派生で作っていたところですが…