![]() |
Public API Reference |
This structure keeps track of the current render context. More...
#include <iengine/rview.h>
Public Attributes | |
| bool | added_fog_info |
| If the following variable is true then a fog_info was added in this recursion level. | |
| csPlane3 | clip_plane |
| This variable holds the plane of the portal through which the camera is looking. | |
| csPlane3 | clip_planes [7] |
| A set of clip planes for this context in world space. | |
| uint32 | clip_planes_mask |
| A frustum masks which indicates which planes of clip_planes are used. | |
| uint32 | context_id |
| This unique id can be used to check if you are still in the same render context. | |
| bool | do_clip_frustum |
| If true then we have to clip all objects to the portal frustum (either in 2D or 3D). | |
| bool | do_clip_plane |
| If true then we clip all objects to 'clip_plane'. | |
| int | draw_rec_level |
| A number indicating the recursion level we are in. | |
| csFogInfo * | fog_info |
| Every fogged sector we encountered results in an extra structure in the following list. | |
| csRef< iCamera > | icamera |
| The current camera. | |
| csRef< iClipper2D > | iview |
| The 2D polygon describing how everything drawn inside should be clipped. | |
| iPortal * | last_portal |
| The last portal we traversed through (or 0 if first sector). | |
| csRenderContext * | previous |
| A pointer back to the previous render context. | |
| iSector * | previous_sector |
| The previous sector (or 0 if the first sector). | |
| iSector * | this_sector |
| This sector. | |
This structure keeps track of the current render context.
It is used by iRenderView. When recursing through a portal a new render context will be created and set in place of the old one.
| uint32 csRenderContext::context_id |
If true then we have to clip all objects to the portal frustum (either in 2D or 3D).
Normally this is not needed but some portals require this. If do_clip_plane is true then the value of this field is also implied to be true. The top-level portal should set do_clip_frustum to true in order for all geometry to be correctly clipped to screen boundaries.
If true then we clip all objects to 'clip_plane'.
In principle one should always clip to 'clip_plane'. However, in many cases this is not required because portals mostly arrive in at the boundaries of a sector so there can actually be no objects after the portal plane. But it is possible that portals arive somewhere in the middle of a sector (for example with BSP sectors or with Things containing portals). In that case this variable will be set to true and clipping to 'clip_plane' is required.