Main Page   Class Hierarchy   Compound List   File List   Compound Members  

iGraphics3D Struct Reference

This is the standard 3D graphics interface. More...

#include <graph3d.h>

Inheritance diagram for iGraphics3D:

iBase List of all members.

Public Methods

virtual bool Open ()=0
 Open the 3D graphics display.

virtual void Close ()=0
 Close the 3D graphics display.

virtual iGraphics2DGetDriver2D ()=0
 Get the 2D driver: This does NOT increment the refcount of 2D driver!

virtual void SetDimensions (int width, int height)=0
 Change the dimensions of the display.

virtual int GetWidth ()=0
 Get drawing buffer width.

virtual int GetHeight ()=0
 Get drawing buffer height.

virtual csGraphics3DCaps* GetCaps ()=0
 Get the current driver's capabilities. More...

virtual void SetPerspectiveCenter (int x, int y)=0
 Set center of projection for perspective projection. More...

virtual void GetPerspectiveCenter (int &x, int &y)=0
 Get perspective center.

virtual void SetPerspectiveAspect (float aspect)=0
 Set aspect ratio for perspective projection.

virtual float GetPerspectiveAspect ()=0
 Get aspect ratio.

virtual void SetObjectToCamera (csReversibleTransform *o2c)=0
 Set world to camera transformation (currently only used by DrawTriangleMesh and DrawPolygonMesh).

virtual const csReversibleTransformGetObjectToCamera ()=0
 Get world to camera transformation.

virtual void SetClipper (iClipper2D *clipper, int cliptype)=0
 Set optional clipper to use. More...

virtual iClipper2DGetClipper ()=0
 Get clipper that was used.

virtual int GetClipType ()=0
 Return type of clipper.

virtual void SetNearPlane (const csPlane3 &pl)=0
 Set near clip plane. More...

virtual void ResetNearPlane ()=0
 Reset near clip plane (i.e. More...

virtual const csPlane3GetNearPlane ()=0
 Get near clip plane.

virtual bool HasNearPlane ()=0
 Return true if we have a near plane.

virtual uint32* GetZBuffAt (int x, int y)=0
 Debugging only: get a pointer to Z-buffer at some location.

virtual float GetZBuffValue (int x, int y)=0
 Get Z-buffer value at given X,Y position.

virtual bool BeginDraw (int DrawFlags)=0
 Start a new frame (see CSDRAW_XXX bit flags).

virtual void FinishDraw ()=0
 End the frame and do a page swap.

virtual void Print (csRect *area)=0
 Print the image in backbuffer. More...

virtual bool SetRenderState (G3D_RENDERSTATEOPTION op, long val)=0
 Set a renderstate value.

virtual long GetRenderState (G3D_RENDERSTATEOPTION op)=0
 Get a renderstate value.

virtual void DrawPolygon (G3DPolygonDP &poly)=0
 Draw the projected polygon with light and texture.

virtual void DrawPolygonDebug (G3DPolygonDP &poly)=0
 Draw the projected polygon with light and texture. More...

virtual void DrawPolygonFX (G3DPolygonDPFX &poly)=0
 Draw a polygon with special effects. More...

virtual void DrawTriangleMesh (G3DTriangleMesh &mesh)=0
 Draw a triangle mesh using features similar to DrawPolygonFX.

virtual void DrawPolygonMesh (G3DPolygonMesh &mesh)=0
 Draw a triangle mesh using features similar to DrawPolygon.

virtual void OpenFogObject (CS_ID id, csFog *fog)=0
 Initiate a volumetric fog object. More...

virtual void DrawFogPolygon (CS_ID id, G3DPolygonDFP &poly, int fogtype)=0
 Add a front or back-facing fog polygon in the current fog object. More...

virtual void CloseFogObject (CS_ID id)=0
 Close a volumetric fog object. More...

virtual void DrawLine (const csVector3 &v1, const csVector3 &v2, float fov, int color)=0
 Draw a line in camera space.

virtual iHaloCreateHalo (float iR, float iG, float iB, unsigned char *iAlpha, int iWidth, int iHeight)=0
 Create a halo of the specified color and return a handle.

virtual void DrawPixmap (iTextureHandle *hTex, int sx, int sy, int sw, int sh, int tx, int ty, int tw, int th, uint8 Alpha=0)=0
 Draw a pixmap using a rectangle from given texture. More...

virtual iTextureManagerGetTextureManager ()=0
 Get the texture manager: do NOT increment the refcount of texture manager.

virtual void DumpCache ()=0
 Dump the texture cache.

virtual void ClearCache ()=0
 Clear the texture cache.

virtual void RemoveFromCache (iPolygonTexture *poly_texture)=0
 Remove some polygon from the cache. More...

virtual iVertexBufferManagerGetVertexBufferManager ()=0
 Get the vertex buffer manager. More...

virtual bool IsLightmapOK (iPolygonTexture *poly_texture)=0
 Check if renderer can handle a lightmap. More...

Detailed Description

This is the standard 3D graphics interface.

All 3D graphics rasterizer servers for Crystal Space should implement this interface, as well as the iGraphics2D interface. The standard implementation is csGraphics3DSoftware.

Member Function Documentation

void iGraphics3D::CloseFogObject ( CS_ID id ) [pure virtual]

Close a volumetric fog object.

After the volumetric object is closed it should be rendered on screen (whether you do it here or in DrawFogPolygon is not important).

void iGraphics3D::DrawFogPolygon ( CS_ID id,
G3DPolygonDFP & poly,
int fogtype ) [pure virtual]

Add a front or back-facing fog polygon in the current fog object.

Note that it is guaranteed that all back-facing fog polygons will have been added before the first front-facing polygon. fogtype can be:

  • CS_FOG_FRONT: a front-facing polygon
  • CS_FOG_BACK: a back-facing polygon
  • CS_FOG_VIEW: the view-plane

void iGraphics3D::DrawPixmap ( iTextureHandle * hTex,
int sx,
int sy,
int sw,
int sh,
int tx,
int ty,
int tw,
int th,
uint8 Alpha = 0 ) [pure virtual]

Draw a pixmap using a rectangle from given texture.

The sx,sy(sw,sh) rectangle defines the screen rectangle within which the drawing is performed (clipping rectangle is also taken into account). The tx,ty(tw,th) rectangle defines a subrectangle from texture which should be painted. If the subrectangle exceeds the actual texture size, texture coordinates are wrapped around (e.g. the texture is tiled). The Alpha parameter defines the transparency of the drawing operation, 0 means opaque, 255 means fully transparent.

WARNING: Tiling works only with textures that have power-of-two sizes! That is, both width and height should be a power-of-two, although not neccessarily equal.

void iGraphics3D::DrawPolygonDebug ( G3DPolygonDP & poly ) [pure virtual]

Draw the projected polygon with light and texture.

Debugging version. This one does not actually draw anything but it just prints debug information about what it would have done.

void iGraphics3D::DrawPolygonFX ( G3DPolygonDPFX & poly ) [pure virtual]

Draw a polygon with special effects.

This is the most rich and slowest variant of DrawPolygonXxx. (If you use these features)

Warning! Do not rely on this method to handle Color keying under all circumstances. Color Keying will only work reliable in Mixmodes FX_Copy, FX_Add and FX_Transparent. When using FX_Multiply and FX_Multiply2, it depends very much on the driver if it works or not. For example the RivaTNT Detonator 0.48 driver can display Multiply with color keying, while newer versions can't. They will then not display anything at all. It is always safer to use a texture where transparent sections are white or 50% gray if you want to achieve transparent sections in Multiply, Multiply2. There are also some drivers (which I would consider buggy...), that won't display FX_Alpha correctly with Color Keying. I can't provide a valid workaround for that except using FX_Multiplay and FX_Add, to manually create the image, but that would be very expensive.

csGraphics3DCaps * iGraphics3D::GetCaps ( ) [pure virtual]

Get the current driver's capabilities.

Each driver implements their own function.

iVertexBufferManager * iGraphics3D::GetVertexBufferManager ( ) [pure virtual]

Get the vertex buffer manager.

This will not increment the ref count of the vertex buffer manager!

bool iGraphics3D::IsLightmapOK ( iPolygonTexture * poly_texture ) [pure virtual]

Check if renderer can handle a lightmap.

Returns true if it can, false if not.

void iGraphics3D::OpenFogObject ( CS_ID id,
csFog * fog ) [pure virtual]

Initiate a volumetric fog object.

This function will be called before front-facing and back-facing fog polygons are added to the object. The fog object will be convex but not necesarily closed. The given CS_ID can be used to identify multiple fog objects when multiple objects are started.

void iGraphics3D::Print ( csRect * area ) [pure virtual]

Print the image in backbuffer.

The area parameter is only a hint to the renderer. Changes outside the rectangle may or may not be printed as well.

void iGraphics3D::RemoveFromCache ( iPolygonTexture * poly_texture ) [pure virtual]

Remove some polygon from the cache.

You have to call this function before deleting a polygon (csPolygon3D destructor will do that).

void iGraphics3D::ResetNearPlane ( ) [pure virtual]

Reset near clip plane (i.e.

disable it).

void iGraphics3D::SetClipper ( iClipper2D * clipper,
int cliptype ) [pure virtual]

Set optional clipper to use.

If clipper == null then there is no clipper. Currently only used by DrawTriangleMesh.

void iGraphics3D::SetNearPlane ( const csPlane3 & pl ) [pure virtual]

Set near clip plane.

Currently only used by DrawTriangleMesh.

void iGraphics3D::SetPerspectiveCenter ( int x,
int y ) [pure virtual]

Set center of projection for perspective projection.

Center is set in screen space coordinates.

The documentation for this struct was generated from the following file:
Generated for Crystal Space by doxygen 1.2.5 written by Dimitri van Heesch, ©1997-2000