0ad/source/renderer/TerrainRenderer.h
janwas 3195893d1c # MacOS X compat (part 1)
- u_anim_name disambiguation
- fix implementation of finite (use our fpclassify instead of compiler's
routine)
- รค -> ae
- workaround for MAP_ANONYMOUS
- fix GLint in ogl.cpp
- add include for SIZE_MAX in string_s
- avoid PIC clobbered error and speed up rdtsc a bit
- add include for stat

This was SVN commit r4170.
2006-07-26 14:04:52 +00:00

109 lines
2.7 KiB
C++

/**
* =========================================================================
* File : TerrainRenderer.h
* Project : Pyrogenesis
* Description : Terrain rendering (everything related to patches and
* : water) is encapsulated in TerrainRenderer
*
* @author Nicolai Haehnle <nicolai@wildfiregames.com>
* =========================================================================
*/
#ifndef TERRAINRENDERER_H
#define TERRAINRENDERER_H
class CPatch;
class ShadowMap;
class WaterManager;
struct TerrainRendererInternals;
/**
* Class TerrainRenderer: Render everything related to the terrain,
* especially patches and water.
*/
class TerrainRenderer
{
public:
TerrainRenderer();
~TerrainRenderer();
/**
* Submit: Add a patch for rendering in this frame.
*
* preconditions : PrepareForRendering must not have been called
* for this frame yet.
* The patch must not have been submitted in this frame yet (i.e. you
* can only submit a frame once).
*
* @param patch the patch
*/
void Submit(CPatch* patch);
/**
* PrepareForRendering: Prepare internal data structures like vertex
* buffers for rendering.
*
* All patches must have been submitted before the call to
* PrepareForRendering.
* PrepareForRendering must be called before any rendering calls.
*/
void PrepareForRendering();
/**
* EndFrame: Remove all patches from the list of submitted patches.
*/
void EndFrame();
/**
* HaveSubmissions: Query whether any patches have been submitted
* for this frame.
*
* @return @c true if a patch has been submitted for this frame,
* @c false otherwise.
*/
bool HaveSubmissions();
/**
* RenderTerrain: Render textured terrain (including blends between
* different terrain types).
*
* preconditions : PrepareForRendering must have been called this
* frame before calling RenderTerrain.
*
* @param shadow a prepared shadow map, in case rendering with shadows is enabled
* @param shadowColor color of shadows
*/
void RenderTerrain(ShadowMap* shadow);
/**
* RenderPatches: Render all patches un-textured as polygons.
*
* preconditions : PrepareForRendering must have been called this
* frame before calling RenderPatches.
*/
void RenderPatches();
/**
* RenderOutlines: Render the outline of patches as lines.
*
* preconditions : PrepareForRendering must have been called this
* frame before calling RenderOutlines.
*/
void RenderOutlines();
/**
* RenderWater: Render water for all patches that have been submitted
* this frame.
*
* preconditions : PrepareForRendering must have been called this
* frame before calling RenderWater.
*/
void RenderWater();
private:
TerrainRendererInternals* m;
};
#endif // TERRAINRENDERER_H