1
// Copyright (C) 2002-2011 Nikolaus Gebhardt
2
// This file is part of the "Irrlicht Engine".
3
// For conditions of distribution and use, see copyright notice in irrlicht.h
5
#ifndef __I_TRIANGLE_RENDERER_H_INCLUDED__
6
#define __I_TRIANGLE_RENDERER_H_INCLUDED__
8
#include "IReferenceCounted.h"
19
enum ETriangleRenderer
26
ETR_TEXTURE_FLAT_WIRE,
28
ETR_TEXTURE_GOURAUD_WIRE,
29
ETR_TEXTURE_GOURAUD_NOZ,
30
ETR_TEXTURE_GOURAUD_ADD,
34
class ITriangleRenderer : public virtual IReferenceCounted
38
//! sets a render target
39
virtual void setRenderTarget(video::IImage* surface, const core::rect<s32>& viewPort) = 0;
41
//! en or disables the backface culling
42
virtual void setBackfaceCulling(bool enabled = true) = 0;
45
virtual void setTexture(video::IImage* texture) = 0;
47
//! draws an indexed triangle list
48
virtual void drawIndexedTriangleList(S2DVertex* vertices, s32 vertexCount, const u16* indexList, s32 triangleCount) = 0;
52
ITriangleRenderer* createTriangleRendererTextureGouraud(IZBuffer* zbuffer);
53
ITriangleRenderer* createTriangleRendererTextureGouraudWire(IZBuffer* zbuffer);
54
ITriangleRenderer* createTriangleRendererGouraud(IZBuffer* zbuffer);
55
ITriangleRenderer* createTriangleRendererGouraudWire(IZBuffer* zbuffer);
56
ITriangleRenderer* createTriangleRendererTextureFlat(IZBuffer* zbuffer);
57
ITriangleRenderer* createTriangleRendererTextureFlatWire(IZBuffer* zbuffer);
58
ITriangleRenderer* createTriangleRendererFlat(IZBuffer* zbuffer);
59
ITriangleRenderer* createTriangleRendererFlatWire(IZBuffer* zbuffer);
60
ITriangleRenderer* createTriangleRendererTextureGouraudNoZ();
61
ITriangleRenderer* createTriangleRendererTextureGouraudAdd(IZBuffer* zbuffer);
64
} // end namespace video
65
} // end namespace irr