#ifndef _RENDERERRAVEN_OPENGL_H #define _RENDERERRAVEN_OPENGL_H #include "common.h" #include "renderer.h" #include "vertexbuffer_vbo.h" #include "rendertarget_fbo.h" #include "font_opengl.h" #include "texture_opengl.h" #include "shader_glsl.h" class RendererOpenGL: public Renderer { private: virtual void UpdateGLState(); int materialfaces; double orthmat[16]; int geomattrib; int geomtexdef; bool geomrun,nd,cd,td; public: RendererOpenGL(Core *core); virtual ~RendererOpenGL() {} virtual void TargetViewport(const Viewport &vp); virtual Viewport TargetViewport(); virtual void PushProjection(); virtual void LoadProjection(const Matrix4x4 &mat); virtual void LoadProjection(const Projection &proj); virtual void MultProjection(Matrix4x4 &mat); virtual void PopProjection(); virtual void PushModelView(); virtual void LoadModelView(const Matrix4x4 &mat); virtual void MultModelView(const Matrix4x4 &mat); virtual void PopModelView(); virtual bool BeginScene(bool clearcolor,bool cleardepth,Vector4 color); virtual bool EndScene(bool flip); virtual void SetCullMode(CullMode mode); virtual CullMode GetCullMode(); virtual void State(int state,bool on); virtual void Blend(BlendMode mode,float mask=0.5f); virtual void BlendMask(float mask); virtual void Material(const RenderMaterial &material); virtual bool EnableLight(int slot,Light *light); virtual bool DisableLight(int slot); virtual VertexBuffer *CreateVertexBuffer(int attribs); virtual bool RenderVertexBuffer(VertexBuffer *buf,GeometryType geomtype); virtual bool BeginGeometry(int attribs,int numtextures,GeometryType geomtype); virtual void GeometryVertex(const Vector3 &vert); virtual void GeometryNormal(const Vector3 &norm); virtual void GeometryColor(const Vector4 &color); virtual void GeometryTexCoord(const Vector2 &texcoord,int idx); virtual bool EndGeometry(); virtual RenderTarget *CreateRenderTargetColorTexture(SamplerState samp,int po2lev,bool floatformat=false); virtual RenderTarget *CreateRenderTargetDepthTexture(SamplerState samp,int po2lev) {return NULL;} virtual bool BindRenderTarget(RenderTarget *target); virtual Texture *CreateTexture(Pixelmap *image,SamplerState samp,unsigned int flags); virtual FontBase *LoadFont(const char *file,int pt); virtual FontBase *LoadFont(const char *file); virtual ShaderProgram *LoadShader(const char *dir,const char *name,bool hasfrag); virtual bool RenderText(FontBase *font,int x,int y,const char *text); }; #endif