Main Page   Class Hierarchy   Compound List   Header Files   Compound Members  

ddgculling.h

This is the verbatim text of the ddgculling.h include file.
/*
    Copyright (C) 1997, 1998, 1999, 2000 by Alex Pfaffe
        (Digital Dawn Graphics Inc)
  
    This library is free software; you can redistribute it and/or
    modify it under the terms of the GNU Library General Public
    License as published by the Free Software Foundation; either
    version 2 of the License, or (at your option) any later version.
  
    This library is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
    Library General Public License for more details.
  
    You should have received a copy of the GNU Library General Public
    License along with this library; if not, write to the Free
    Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/
#ifndef _ddgCulling_Class_
#define _ddgCulling_Class_
// THIS CLASS IS NOT UPTODATE
#include "util/ddgutil.h"
// 
// Fast display techniques by Alex Pfaffe 
// Front to back rendering.
// View frustrum culling.
// - Use accurate bounding boxes TODO.
// Occlusion culling.
// Triangle strip generation.
// Automatic LOD generation.
// Use threads.
// Map floats to integer space.
// User glPixelZoom to render moving images.


class ddgCulling
{
  double     _minx, _maxx, _miny, _maxy;
  int        _tw;
  int        _th;
  int   HOMWidth;
  int   HOMHeight;
  bool _HOMtest( float sx, float sy, float dx, float dy,int level,int px,int py);
  void *_mapBuffer;
public:
  int   polcount;
  int   scale;
  int   viewCulling;
  int   buildHOM;
  int   occlusionCulling;
  int   HOMLimit;
  float HOMDepth;// The furthest Z limit of a bbox used for HOM occlusion.
  int minX() { return (int) _minx; }
  int maxX() { return (int) _maxx; }
  int minY() { return (int) _miny; }
  int maxY() { return (int) _maxy; }
  void boxInit() { _minx = _miny = MAXFLOAT; _maxx = _maxy = -MAXFLOAT;}
  void limitBoxMinX(double d) { if (d < _minx) _minx = d; }
  void limitBoxMaxX(double d) { if (d > _maxx) _maxx = d; }
  void limitBoxMinY(double d) { if (d < _miny) _miny = d; }
  void limitBoxMaxY(double d) { if (d > _maxy) _maxy = d; }
  void limitBox( float x1,float y1, float x2, float y2 )
    {
    if ( _minx < x1 ) _minx = x1;
    if ( _maxx < x1 ) _maxx = x1;
    if ( _miny < y1 ) _miny = y1;
    if ( _maxy < y1 ) _maxy = y1;
    if ( _minx > x2 ) _minx = x2;
    if ( _maxx > x2 ) _maxx = x2;
    if ( _miny > y2 ) _miny = y2;
    if ( _maxy > y2 ) _maxy = y2;
    }
  void scaleBox(double w, double h); 
  void buildHOMMap(void);
  bool HOMvisible(void);
       ddgCulling(int w = 512, int h = 512);
      ~ddgCulling();
  void copybufToTexture(int sx, int sy, int dx, int dy );
  void setupTexture(int dx, int dy);
  void finishTexture(void);
};

extern ddgCulling cullingInfo;  // Global instance.

#endif

Generated at Sun Sep 17 19:27:52 2000 for Digital Dawn Graphics Toolkit by doxygen 0.49-991205 written by Dimitri van Heesch, © 1997-1999