nuclear@0: #ifndef GPUSCENE_H_ nuclear@0: #define GPUSCENE_H_ nuclear@0: nuclear@0: #include nuclear@0: #include "scene.h" nuclear@0: #include "sphere.h" nuclear@0: #include "plane.h" nuclear@0: #include "box.h" nuclear@4: #include "cone.h" nuclear@0: nuclear@0: class GPUScene : public Scene { nuclear@0: public: nuclear@4: enum { TEX_SPHERE, TEX_PLANE, TEX_BOX, TEX_CONE, TEX_TEXTURE, TEX_ENV, TEX_XFORM, NUM_TEXTURES }; nuclear@0: nuclear@0: private: nuclear@0: unsigned int textures[NUM_TEXTURES]; nuclear@0: Vector4 *xform_buf; nuclear@0: nuclear@0: int object_index(const Object *obj) const; nuclear@0: nuclear@0: void create_sphere_texture(const std::vector &spheres); nuclear@0: void create_plane_texture(const std::vector &planes); nuclear@0: void create_box_texture(const std::vector &box); nuclear@4: void create_cone_texture(const std::vector &cones); nuclear@0: void create_megatexture(); nuclear@0: void create_env_texture(); nuclear@0: void create_xform_texture(); nuclear@0: nuclear@0: public: nuclear@0: GPUScene(); nuclear@0: ~GPUScene(); nuclear@0: nuclear@0: bool create_textures(); nuclear@0: nuclear@0: void update_xform_texture(); nuclear@0: nuclear@0: unsigned int get_texture(int which) const; nuclear@0: }; nuclear@0: nuclear@0: #endif // GPUSCENE_H_