00001 /* -*- C++ -*- */ 00002 00003 /* COPYRIGHT 00004 * 00005 * This file is part of the Simple Object Loader and Renderer - SOLAR 00006 * 00007 * Read the file "SOLAR-LICENSE" for the license. 00008 * 00009 * Authors & Copyright: 00010 * 00011 * Tommi Ilmonen, 2001-2003, except LWO-code by RJ, 2001-2003 00012 * 00013 * Tommi's email: firstname.lastname@hut.fi 00014 * 00015 */ 00016 00017 #ifndef SOLAR_RENDERER_HPP 00018 #define SOLAR_RENDERER_HPP 00019 00020 #include <Fluid/Matrix3.hpp> 00021 #include <Fluid/Vector3.hpp> 00022 00023 namespace Solar { 00024 00025 class Model; 00026 class GraphicTriangles; 00027 class GraphicTriangleMesh; 00028 class GraphicTriangleStrips; 00029 00039 class Renderer 00040 { 00041 public: 00042 Renderer() {} 00043 virtual ~Renderer() {} 00044 00045 virtual void prepareToRender() = 0; 00046 00048 virtual void begin(Model *) = 0; 00050 virtual void end() = 0; 00051 00053 virtual void renderTriangles(GraphicTriangles *) = 0; 00055 virtual void renderTriangleMesh(GraphicTriangleMesh *) = 0; 00057 virtual void renderTriangleStrips(GraphicTriangleStrips *) = 0; 00058 00060 virtual void pushTransform(const Fluid::Matrix3 &, 00061 const Fluid::Vector3 &, 00062 float scale = 1.0) = 0; 00064 virtual void popTransform() = 0; 00065 00066 }; 00067 00068 } // namespace Solar 00069 00070 #endif