A fairly direct port of Brian Paul's tile rendering library, found
at
http://www.mesa3d.org/brianp/TR.html . I've java-fied it, but
the functionality is the same.
Original code Copyright (C) 1997-2005 Brian Paul. Licensed under
BSD-compatible terms with permission of the author. See LICENSE.txt
for license information.
TR_BOTTOM_TO_TOP
public static final int TR_BOTTOM_TO_TOP
Indicates we are traversing rows from the bottom to the top
TR_COLUMNS
public static final int TR_COLUMNS
The number of columns of tiles
TR_CURRENT_COLUMN
public static final int TR_CURRENT_COLUMN
The current column number
TR_CURRENT_ROW
public static final int TR_CURRENT_ROW
The current row number
TR_CURRENT_TILE_HEIGHT
public static final int TR_CURRENT_TILE_HEIGHT
The height of the current tile
TR_CURRENT_TILE_WIDTH
public static final int TR_CURRENT_TILE_WIDTH
The width of the current tile
TR_IMAGE_HEIGHT
public static final int TR_IMAGE_HEIGHT
The height of the final image
TR_IMAGE_WIDTH
public static final int TR_IMAGE_WIDTH
The width of the final image
TR_ROWS
public static final int TR_ROWS
The number of rows of tiles
TR_ROW_ORDER
public static final int TR_ROW_ORDER
The order that the rows are traversed
TR_TILE_BORDER
public static final int TR_TILE_BORDER
The width of the border around the tiles
TR_TILE_HEIGHT
public static final int TR_TILE_HEIGHT
The height of a tile
TR_TILE_WIDTH
public static final int TR_TILE_WIDTH
The width of a tile
TR_TOP_TO_BOTTOM
public static final int TR_TOP_TO_BOTTOM
Indicates we are traversing rows from the top to the bottom
beginTile
public void beginTile(GL gl)
Begins rendering a tile. The projection matrix stack should be
left alone after calling this
endTile
public boolean endTile(GL gl)
Must be called after rendering the scene
- true if there are more tiles to be rendered, false if
the final image is complete
getParam
public int getParam(int param)
Gets the parameters of this TileRenderer object
param
- The parameter that is to be retrieved
- the value of the parameter
setImageBuffer
public void setImageBuffer(int format,
int type,
Buffer image)
Sets the buffer in which to store the final image
format
- Interpreted as in glReadPixelstype
- Interpreted as in glReadPixelsimage
- the buffer itself, must be large enough to hold the
final image
setImageSize
public void setImageSize(int width,
int height)
Sets the desired size of the final image
width
- The width of the final imageheight
- The height of the final image
setRowOrder
public void setRowOrder(int order)
Sets the order of row traversal
order
- The row traversal order, must be
eitherTR_TOP_TO_BOTTOM or TR_BOTTOM_TO_TOP
setTileBuffer
public void setTileBuffer(int format,
int type,
Buffer image)
Specify a buffer the tiles to be copied to. This is not
necessary for the creation of the final image, but useful if you
want to inspect each tile in turn.
format
- Interpreted as in glReadPixelstype
- Interpreted as in glReadPixelsimage
- The buffer itself. Must be large enough to contain a
tile, minus any borders
setTileSize
public void setTileSize(int width,
int height,
int border)
Sets the size of the tiles to use in rendering. The actual
effective size of the tile depends on the border size, ie (
width - 2*border ) * ( height - 2 * border )
width
- The width of the tiles. Must not be larger than the GL
contextheight
- The height of the tiles. Must not be larger than the
GL contextborder
- The width of the borders on each tile. This is needed
to avoid artifacts when rendering lines or points with
thickness > 1.
trFrustum
public void trFrustum(double left,
double right,
double bottom,
double top,
double zNear,
double zFar)
Sets the perspective projection frustrum. Must be called before
rendering the first tile
left
- As in glFrustrumright
- As in glFrustrumbottom
- As in glFrustrumtop
- As in glFrustrumzNear
- As in glFrustrumzFar
- As in glFrustrum
trOrtho
public void trOrtho(double left,
double right,
double bottom,
double top,
double zNear,
double zFar)
Sets the context to use an orthographic projection. Must be
called before rendering the first tile
left
- As in glOrthoright
- As in glOrthobottom
- As in glOrthotop
- As in glOrthozNear
- As in glOrthozFar
- As in glOrtho
trPerspective
public void trPerspective(double fovy,
double aspect,
double zNear,
double zFar)
Convenient way to specify a perspective projection
fovy
- As in gluPerspectiveaspect
- As in gluPerspectivezNear
- As in gluPerspectivezFar
- As in gluPerspective
trRasterPos3f
public void trRasterPos3f(float x,
float y,
float z,
GL gl,
GLU glu)
Tile rendering causes problems with using glRasterPos3f, so you
should use this replacement instead
x
- As in glRasterPos3fy
- As in glRasterPos3fz
- As in glRasterPos3fgl
- The gl contextglu
- A GLU object