2022-10-09 05:13:17 +00:00
|
|
|
#ifndef _IRENDERER
|
|
|
|
#define _IRENDERER
|
2022-09-13 04:26:54 +00:00
|
|
|
|
|
|
|
#include "types.h"
|
2022-10-24 21:44:55 +00:00
|
|
|
#include "rstl/pair.hpp"
|
2022-09-13 04:26:54 +00:00
|
|
|
|
2022-10-17 15:54:45 +00:00
|
|
|
class CTransform4f;
|
|
|
|
class CParticleGen;
|
|
|
|
class IObjectStore;
|
|
|
|
class COsContext;
|
|
|
|
class CMemorySys;
|
|
|
|
class CResFactory;
|
2022-10-24 21:44:55 +00:00
|
|
|
class CAABox;
|
2022-10-28 09:01:30 +00:00
|
|
|
class CVector2f;
|
|
|
|
class CVector3f;
|
2022-10-17 15:54:45 +00:00
|
|
|
|
2022-09-13 04:26:54 +00:00
|
|
|
class IRenderer {
|
|
|
|
public:
|
2022-11-15 13:45:15 +00:00
|
|
|
typedef void (*TDrawableCallback)(const void*, const void*, int);
|
2022-11-15 01:08:30 +00:00
|
|
|
|
2022-09-13 04:26:54 +00:00
|
|
|
enum EDrawableSorting {
|
|
|
|
kDS_SortedCallback,
|
|
|
|
kDS_UnsortedCallback,
|
|
|
|
};
|
|
|
|
|
|
|
|
virtual ~IRenderer();
|
|
|
|
// TODO vtable
|
2022-10-17 15:02:11 +00:00
|
|
|
|
|
|
|
virtual void AddStaticGeometry();
|
|
|
|
virtual void EnablePVS();
|
|
|
|
virtual void DisablePVS();
|
|
|
|
virtual void RemoveStaticGeometry();
|
|
|
|
virtual void DrawUnsortedGeometry();
|
|
|
|
virtual void DrawSortedGeometry();
|
|
|
|
virtual void DrawStaticGeometry();
|
|
|
|
virtual void DrawAreaGeometry();
|
|
|
|
virtual void PostRenderFogs();
|
|
|
|
virtual void SetModelMatrix(const CTransform4f& xf);
|
|
|
|
virtual void AddParticleGen(const CParticleGen& gen);
|
2022-10-23 13:44:06 +00:00
|
|
|
virtual void AddParticleGen2();
|
|
|
|
virtual void AddPlaneObject();
|
|
|
|
virtual void AddDrawable(const void* obj, const CVector3f& pos, const CAABox& bounds, int mode,
|
|
|
|
IRenderer::EDrawableSorting sorting);
|
2022-11-15 01:08:30 +00:00
|
|
|
virtual void SetDrawableCallback(TDrawableCallback cb, void* ctx);
|
2022-10-23 13:44:06 +00:00
|
|
|
virtual void SetWorldViewpoint();
|
2022-11-14 02:18:45 +00:00
|
|
|
virtual void SetPerspective1(float, float, float, float, float);
|
2022-10-23 13:44:06 +00:00
|
|
|
virtual void SetPerspective2();
|
|
|
|
virtual rstl::pair< CVector2f, CVector2f > SetViewportOrtho(bool centered, float znear,
|
|
|
|
float zfar);
|
|
|
|
virtual void SetClippingPlanes();
|
|
|
|
virtual void SetViewport();
|
|
|
|
virtual void SetDepthReadWrite(bool read, bool update);
|
|
|
|
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_AdditiveDestColor();
|
2022-09-13 04:26:54 +00:00
|
|
|
};
|
|
|
|
|
|
|
|
namespace Renderer {
|
|
|
|
IRenderer* AllocateRenderer(IObjectStore&, COsContext&, CMemorySys&, CResFactory&);
|
2022-10-09 05:13:17 +00:00
|
|
|
}; // namespace Renderer
|
2022-09-13 04:26:54 +00:00
|
|
|
|
2022-10-09 05:13:17 +00:00
|
|
|
#endif // _IRENDERER
|