Go to most recent revision | Blame | Last modification | View Log | RSS feed
/*
* ManifoldRenderer.h
* GEL
*
* Created by J. Andreas Bærentzen on 20/09/08.
* Copyright 2008 __MyCompanyName__. All rights reserved.
*
*/
#ifndef __MESHEDIT_RENDERER_H__
#define __MESHEDIT_RENDERER_H__
#include <GL/glew.h>
#include "harmonics.h"
#include <GLGraphics/draw.h>
#include <GLGraphics/IDBufferWireFrameRenderer.h>
class ManifoldRenderer
{
protected:
GLuint display_list;
public:
ManifoldRenderer(): display_list(glGenLists(1)) {}
virtual ~ManifoldRenderer()
{
glDeleteLists(display_list, 1);
}
virtual void draw()
{
glCallList(display_list);
}
};
class NormalRenderer: public ManifoldRenderer
{
public:
NormalRenderer(HMesh::Manifold& m, bool flat)
{
glNewList(display_list,GL_COMPILE);
GLGraphics::draw(m,flat);
glEndList();
}
};
class WireframeRenderer: public ManifoldRenderer
{
GLGraphics::IDBufferWireframeRenderer* idbuff_renderer;
int maximum_face_valency(HMesh::Manifold& m);
public:
~WireframeRenderer()
{
delete idbuff_renderer;
}
WireframeRenderer(HMesh::Manifold& m, bool flat);
void draw();
};
class HarmonicsRenderer: public ManifoldRenderer
{
public:
HarmonicsRenderer(Harmonics* h)
{
glNewList(display_list,GL_COMPILE);
if(h) h->draw();
glEndList();
}
};
class SimpleShaderRenderer: public ManifoldRenderer
{
GLuint prog,vs,fs;
public:
SimpleShaderRenderer(HMesh::Manifold& m, const std::string& vss, const std::string& fss);
~SimpleShaderRenderer()
{
glDeleteProgram(prog);
glDeleteShader(vs);
glDeleteShader(fs);
}
virtual void draw();
};
class ReflectionLineRenderer: public SimpleShaderRenderer
{
const static std::string vss;
const static std::string fss;
public:
ReflectionLineRenderer(HMesh::Manifold& m):
SimpleShaderRenderer(m, vss, fss) {}
};
class IsophoteLineRenderer: public SimpleShaderRenderer
{
const static std::string vss;
const static std::string fss;
public:
IsophoteLineRenderer(HMesh::Manifold& m):
SimpleShaderRenderer(m, vss, fss) {}
};
class MetallicRenderer: public SimpleShaderRenderer
{
const static std::string vss;
const static std::string fss;
public:
MetallicRenderer(HMesh::Manifold& m):
SimpleShaderRenderer(m, vss, fss) {}
};
#endif
Generated by GNU Enscript 1.6.6.