Files
simgear/simgear/screen/tr.h
ehofman c7cbb22667 - remove the SG_GLxxxx_H #defines, since OSG provides its own versions
- this exposed a bizarre issue on Mac where dragging in <AGL/agl.h> in
   extensions.hxx was pulling in all of Carbon to the global namespace
   - very scary. As a result, I now need to explicitly include CoreFoundation
   in fg_init.cxx.
 - change SG_USING_STD(x) to using std::x

Issues:

 - the logic for X11 and Win32 in RenderTexture and extensions is tortured,
   please see if you agree I got all the ifdefs correct.
2008-07-27 16:10:36 +00:00

198 lines
4.5 KiB
C++

/* $Id$ */
/*
* $Log$
* Revision 1.4 2008/07/27 16:10:37 ehofman
*
*
* - remove the SG_GLxxxx_H #defines, since OSG provides its own versions
* - this exposed a bizarre issue on Mac where dragging in <AGL/agl.h> in
* extensions.hxx was pulling in all of Carbon to the global namespace
* - very scary. As a result, I now need to explicitly include CoreFoundation
* in fg_init.cxx.
* - change SG_USING_STD(x) to using std::x
*
* Issues:
*
* - the logic for X11 and Win32 in RenderTexture and extensions is tortured,
* please see if you agree I got all the ifdefs correct.
*
* Revision 1.3 2006/02/21 10:47:21 ehofman
* Back out the previous patch.
*
* Revision 1.2 2004/11/18 19:10:34 curt
* Abstract out location of gl.h, glut.h, and glu.h includes so that we can
* make the Mac platform happy since they put these in a different place compared
* to the rest of the world.
*
* Revision 1.1.1.1 2002/09/07 02:58:19 curt
* Initial revsion of Simgear-0.3.0
*
* Revision 1.1 2001/06/26 15:19:39 curt
* Added tr.cxx / tr.h, Brian Paul's LGPL'd tiled rendering support libs for
* rendering ultra high res "tiled" screen shots.
*
* Revision 1.5 1997/07/21 17:34:07 brianp
* added tile borders, incremented version to 1.1
*
* Revision 1.4 1997/07/21 15:47:35 brianp
* renamed all "near" and "far" variables
*
* Revision 1.3 1997/04/26 21:23:25 brianp
* added trRasterPos3f function
*
* Revision 1.2 1997/04/19 23:26:10 brianp
* many API changes
*
* Revision 1.1 1997/04/18 21:53:05 brianp
* Initial revision
*
*/
/*
* Tiled Rendering library
* Version 1.1
* Copyright (C) Brian Paul
*
*
* This library allows one to render arbitrarily large images with OpenGL.
* The basic idea is to break the image into tiles which are rendered one
* at a time. The tiles are assembled together to form the final, large
* image. Tiles and images can be of any size.
*
* Basic usage:
*
* 1. Allocate a tile rendering context:
* TRcontext t = trNew();
*
* 2. Specify the final image buffer and tile size:
* GLubyte image[W][H][4]
* trImageSize(t, W, H);
* trImageBuffer(t, GL_RGBA, GL_UNSIGNED_BYTE, (GLubyte *) image);
*
* 3. Setup your projection:
* trFrustum(t, left, right, bottom top, near, far);
* or
* trOrtho(t, left, right, bottom top, near, far);
* or
* trPerspective(t, fovy, aspect, near, far);
*
* 4. Render the tiles:
* do {
* trBeginTile(t);
* DrawMyScene();
* } while (trEndTile(t));
*
* You provide the DrawMyScene() function which calls glClear() and
* draws all your stuff.
*
* 5. The image array is now complete. Display it, write it to a file, etc.
*
* 6. Delete the tile rendering context when finished:
* trDelete(t);
*
*/
#ifndef TR_H
#define TR_H
#include <simgear/compiler.h>
#include <osg/GL>
//#ifdef __cplusplus
//extern "C" {
//#endif
#define TR_VERSION "1.1"
#define TR_MAJOR_VERSION 1
#define TR_MINOR_VERSION 1
typedef struct _TRctx TRcontext;
typedef enum {
TR_TILE_WIDTH = 100,
TR_TILE_HEIGHT,
TR_TILE_BORDER,
TR_IMAGE_WIDTH,
TR_IMAGE_HEIGHT,
TR_ROWS,
TR_COLUMNS,
TR_CURRENT_ROW,
TR_CURRENT_COLUMN,
TR_CURRENT_TILE_WIDTH,
TR_CURRENT_TILE_HEIGHT,
TR_ROW_ORDER,
TR_TOP_TO_BOTTOM,
TR_BOTTOM_TO_TOP,
TR_LEFT,
TR_RIGHT,
TR_BOTTOM,
TR_TOP,
TR_NEAR,
TR_FAR
} TRenum;
extern TRcontext *trNew(void);
extern void trDelete(TRcontext *tr);
extern void trTileSize(TRcontext *tr, GLint width, GLint height, GLint border);
extern void trTileBuffer(TRcontext *tr, GLenum format, GLenum type,
GLvoid *image);
extern void trImageSize(TRcontext *tr, GLint width, GLint height);
extern void trImageBuffer(TRcontext *tr, GLenum format, GLenum type,
GLvoid *image);
extern void trRowOrder(TRcontext *tr, TRenum order);
extern GLint trGet(TRcontext *tr, TRenum param);
extern GLdouble trGetD(TRcontext *tr, TRenum param);
extern void trOrtho(TRcontext *tr,
GLdouble left, GLdouble right,
GLdouble bottom, GLdouble top,
GLdouble zNear, GLdouble zFar);
extern void trFrustum(TRcontext *tr,
GLdouble left, GLdouble right,
GLdouble bottom, GLdouble top,
GLdouble zNear, GLdouble zFar);
extern void trPerspective(TRcontext *tr,
GLdouble fovy, GLdouble aspect,
GLdouble zNear, GLdouble zFar );
extern void trBeginTile(TRcontext *tr);
extern int trEndTile(TRcontext *tr);
extern void trRasterPos3f(TRcontext *tr, GLfloat x, GLfloat y, GLfloat z);
//#ifdef __cplusplus
//}
//#endif
#endif