2015-08-21 00:06:39 +00:00
|
|
|
#ifndef __RETRO_IRENDERER_HPP__
|
|
|
|
#define __RETRO_IRENDERER_HPP__
|
|
|
|
|
|
|
|
#include <vector>
|
|
|
|
#include "../RetroTypes.hpp"
|
|
|
|
#include "../CToken.hpp"
|
|
|
|
#include "CAABox.hpp"
|
|
|
|
#include "CPlane.hpp"
|
|
|
|
#include "CFrustum.hpp"
|
|
|
|
#include "CColor.hpp"
|
|
|
|
|
|
|
|
namespace Retro
|
|
|
|
{
|
|
|
|
class CMetroidModelInstance;
|
|
|
|
class CLight;
|
|
|
|
class CAreaOctTree;
|
|
|
|
class CParticleGen;
|
|
|
|
class CModel;
|
|
|
|
class CSkinnedModel;
|
|
|
|
|
|
|
|
class IRenderer
|
|
|
|
{
|
|
|
|
public:
|
|
|
|
typedef void(*TDrawableCallback)(const void*, const void*, int);
|
|
|
|
typedef void(*TReflectionCallback)(void*, const CVector3f&);
|
2015-11-21 01:16:07 +00:00
|
|
|
enum class EDrawableSorting
|
2015-08-21 00:06:39 +00:00
|
|
|
{
|
|
|
|
};
|
2015-11-21 01:16:07 +00:00
|
|
|
enum class EDebugOption
|
2015-08-21 00:06:39 +00:00
|
|
|
{
|
|
|
|
};
|
2015-11-21 01:16:07 +00:00
|
|
|
enum class EPrimitiveType
|
2015-08-21 00:06:39 +00:00
|
|
|
{
|
|
|
|
};
|
2015-11-21 01:16:07 +00:00
|
|
|
enum class ERglFogMode
|
2015-08-21 00:06:39 +00:00
|
|
|
{
|
|
|
|
};
|
|
|
|
|
|
|
|
virtual void AddStaticGeometry(const std::vector<CMetroidModelInstance>&, const CAreaOctTree*, int);
|
|
|
|
virtual void RemoveStaticGeometry(const std::vector<CMetroidModelInstance>&);
|
|
|
|
virtual void DrawUnsortedGeometry(const std::vector<CLight>&, int, unsigned int, unsigned int);
|
|
|
|
virtual void DrawSortedGeometry(const std::vector<CLight>&, int, unsigned int, unsigned int);
|
|
|
|
virtual void DrawStaticGeometry(const std::vector<CLight>&, int, unsigned int, unsigned int);
|
|
|
|
virtual void PostRenderFogs();
|
|
|
|
virtual void AddParticleGen(const CParticleGen&);
|
|
|
|
virtual void AddPlaneObject(const void*, const CAABox&, const CPlane&, int);
|
|
|
|
virtual void AddDrawable(void const *, const CVector3f&, const CAABox&, int, EDrawableSorting);
|
|
|
|
virtual void SetDrawableCallback(TDrawableCallback, const void*);
|
|
|
|
virtual void SetWorldViewpoint(const CTransform&);
|
|
|
|
virtual void SetPerspectiveFovScalar(float);
|
2015-08-22 01:58:41 +00:00
|
|
|
virtual void SetPerspective(float, float, float, float, float);
|
|
|
|
virtual void SetPerspective(float, float, float, float);
|
|
|
|
virtual void SetViewportOrtho(bool, float, float);
|
2015-08-21 00:06:39 +00:00
|
|
|
virtual void SetClippingPlanes(const CFrustum&);
|
2015-08-22 01:58:41 +00:00
|
|
|
virtual void SetViewport(int, int, int, int);
|
|
|
|
virtual void SetDepthReadWrite(bool, bool);
|
2015-08-21 00:06:39 +00:00
|
|
|
virtual void SetBlendMode_AdditiveAlpha();
|
|
|
|
virtual void SetBlendMode_AlphaBlended();
|
|
|
|
virtual void SetBlendMode_NoColorWrite();
|
|
|
|
virtual void SetBlendMode_ColorMultiply();
|
|
|
|
virtual void SetBlendMode_InvertDst();
|
|
|
|
virtual void SetBlendMode_InvertSrc();
|
|
|
|
virtual void SetBlendMode_Replace();
|
|
|
|
virtual void SetBlendMode_AdditiveDestColor();
|
2015-08-22 01:58:41 +00:00
|
|
|
virtual void SetDebugOption(EDebugOption, int);
|
2015-08-21 00:06:39 +00:00
|
|
|
virtual void BeginScene();
|
|
|
|
virtual void EndScene();
|
2015-08-22 01:58:41 +00:00
|
|
|
virtual void BeginPrimitive(EPrimitiveType, int);
|
2015-08-21 00:06:39 +00:00
|
|
|
virtual void BeginLines(int);
|
|
|
|
virtual void BeginLineStrip(int);
|
|
|
|
virtual void BeginTriangles(int);
|
|
|
|
virtual void BeginTriangleStrip(int);
|
|
|
|
virtual void BeginTriangleFan(int);
|
|
|
|
virtual void PrimVertex(const CVector3f&);
|
|
|
|
virtual void PrimNormal(const CVector3f&);
|
2015-08-22 01:58:41 +00:00
|
|
|
virtual void PrimColor(float, float, float, float);
|
2015-08-21 00:06:39 +00:00
|
|
|
virtual void PrimColor(const CColor&);
|
|
|
|
virtual void EndPrimitive();
|
|
|
|
virtual void SetAmbientColor(const CColor&);
|
|
|
|
virtual void SetStaticWorldAmbientColor(const CColor&);
|
|
|
|
virtual void DrawString(const char*, int, int);
|
|
|
|
virtual u32 GetFPS();
|
|
|
|
virtual void CacheReflection(TReflectionCallback, void*, bool);
|
|
|
|
virtual void DrawSpaceWarp(const CVector3f&, float);
|
|
|
|
virtual void DrawThermalModel(const CModel&, const CColor&, const CColor&, const float*, const float*);
|
|
|
|
virtual void DrawXRayOutline(const CModel&, const float*, const float*);
|
|
|
|
virtual void SetWireframeFlags(int);
|
|
|
|
virtual void SetWorldFog(ERglFogMode, float, float, const CColor&);
|
|
|
|
virtual void RenderFogVolume(const CColor&, const CAABox&, const TLockedToken<CModel>*, const CSkinnedModel*);
|
|
|
|
virtual void SetThermal(bool, float, const CColor&);
|
|
|
|
virtual void DoThermalBlendCold();
|
|
|
|
virtual void DoThermalBlendHot();
|
|
|
|
virtual u32 GetStaticWorldDataSize();
|
|
|
|
};
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
#endif // __RETRO_IRENDERER_HPP__
|