tr.h
上传用户:xk288cn
上传日期:2007-05-28
资源大小:4876k
文件大小:2k
源码类别:

GIS编程

开发平台:

Visual C++

  1. /* tr.h */
  2. /*
  3.  * Tiled Rendering library
  4.  *
  5.  * This library allows one to render arbitrarily large images with OpenGL.
  6.  * The basic idea is to break the image into tiles which are rendered one
  7.  * at a time.  The tiles are assembled together to form the final, large
  8.  * image.  Tiles can be of any size.
  9.  *
  10.  * Basic usage:
  11.  *
  12.  * 1. Allocate a tile rendering context:
  13.  *       TRcontext t = trNew();
  14.  *
  15.  * 2. Specify the final image buffer and tile size:
  16.  *       GLubyte image[W][H][4]
  17.  *       trSetup(t, W, H, (GLubyte *) image, tileWidth, tileHeight);
  18.  *
  19.  * 3. Setup your projection:
  20.  *       trFrustum(t, left, right, bottom top, nnear, ffar);
  21.  *    or
  22.  *       trOrtho(t, left, right, bottom top, nnear, ffar);
  23.  *    or
  24.  *       trPerspective(t, fovy, aspect, nnear, ffar);
  25.  *
  26.  * 4. Render the tiles:
  27.  *       do {
  28.  *           trBeginTile(t);
  29.  *           DrawMyScene();
  30.  *       } while (trEndTile(t));
  31.  *
  32.  *    You provide the DrawMyScene() function which calls glClear() and
  33.  *    draws all your stuff.
  34.  *
  35.  * 5. The image array is now complete.  Display it, write it to a file, etc.
  36.  *
  37.  * 6. Delete the tile rendering context when finished:
  38.  *       trDelete(t);
  39.  *
  40.  *
  41.  * Brian Paul
  42.  * April 1997
  43.  */
  44. #ifndef TR_H
  45. #define TR_H
  46. #ifdef _WIN32
  47. #include <windows.h>
  48. #endif
  49. #include <GL/gl.h>
  50. typedef struct _TRctx TRcontext;
  51. extern TRcontext *trNew(void);
  52. extern void trDelete(TRcontext *tr);
  53. extern void trSetup(TRcontext *tr,
  54.     GLint imageWidth, GLint imageHeight, GLubyte *image,
  55.     GLint tileWidth, GLint tileHeight);
  56. extern void trOrtho(TRcontext *tr,
  57.     GLdouble left, GLdouble right,
  58.     GLdouble bottom, GLdouble top,
  59.     GLdouble nnear, GLdouble ffar);
  60. extern void trFrustum(TRcontext *tr,
  61.       GLdouble left, GLdouble right,
  62.       GLdouble bottom, GLdouble top,
  63.       GLdouble nnear, GLdouble ffar);
  64. extern void trPerspective(TRcontext *tr,
  65.   GLdouble fovy, GLdouble aspect,
  66.   GLdouble zNear, GLdouble zFar );
  67. extern void trBeginTile(TRcontext *tr);
  68. extern int trEndTile(TRcontext *tr);
  69. #endif