00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
#ifndef OPENCAL_RENDERER_H
00012
#define OPENCAL_RENDERER_H
00013
00014
00015
#include <OpenCAL/global.h>
00016
00017
00018
namespace OpenCAL
00019 {
00020
00021
00022
class TriangleMesh;
00023
namespace Utils {
class Material;
class Texture;
class Camera;
class Vector3;
class Quaternion; }
00024
using OpenCAL::Utils::Material;
00025
using OpenCAL::Utils::Texture;
00026
using OpenCAL::Utils::Camera;
00027
using OpenCAL::Utils::Vector3;
00028
using OpenCAL::Utils::Quaternion;
00029
00033 class OPENCAL_API Renderer
00034 {
00035
protected:
00036
00037
00038
00039
public:
00040
00041 Renderer();
00042
virtual ~Renderer();
00043
00044
00045
virtual void resetTransformation() = 0;
00046
virtual void pushTransformation() = 0;
00047
virtual void popTransformation() = 0;
00048
virtual void rotate(
const Quaternion &rotation) = 0;
00049
virtual void translate(
const Vector3 &translation) = 0;
00050
virtual void applyCamera(
const Camera &camera) = 0;
00051
virtual void unapplyCamera(
const Camera &camera) = 0;
00052
00053
00054
virtual void setMaterial(
const Material *material,
bool back =
false) = 0;
00055
00056
00057
virtual void initializeTexture(
const Texture *texture) = 0;
00058
virtual void setTexture(
const Texture *texture) = 0;
00059
virtual void setNoTexture() = 0;
00060
00061
00062
virtual void initializeMesh(
const TriangleMesh *mesh) = 0;
00063
00064
00065
virtual void renderPoint(
const Vector3 &position,
float thickness = 1.0f) = 0;
00066
virtual void renderLine(
const Vector3 &from,
const Vector3 &to,
float thickness = 1.0f) = 0;
00067
virtual void renderPlane() = 0;
00068
virtual void renderSphere(
float radius) = 0;
00069
virtual void renderMesh(
const TriangleMesh *mesh) = 0;
00070
00071
00072
00073
00074
00075
00076
virtual void initialize() {}
00077 };
00078 }
00079
00080
#endif // OPENCAL_RENDERER_H