edu.sdsc.mbt.image
Class TileRenderer

java.lang.Object
  extended byedu.sdsc.mbt.image.TileRenderer

public class TileRenderer
extends java.lang.Object

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.

Author:
ryanm

Constructor Summary
TileRenderer()
          Creates a new TileRender object
 
Method Summary
 void beginTile(javax.media.opengl.GL gl)
          Begins rendering a tile.
 boolean endTile(javax.media.opengl.GL gl)
          Must be called after rendering the scene
 int getParam(int param)
          Gets the parameters of this TileRender object
 void setImageBuffer(int format, int type, java.nio.Buffer image)
          Sets the buffer in which to store the final image
 void setImageSize(int width, int height)
          Sets the desired size of the final image
 void setRowOrder(int order)
          Sets the order of row traversal
 void setTileBuffer(int format, int type, java.nio.Buffer image)
          Specify a buffer the tiles to be copied to.
 void setTileSize(int width, int height, int border)
          Sets the size of the tiles to use in rendering.
 void trFrustum(double left, double right, double bottom, double top, double zNear, double zFar)
          Sets the perspective projection frustrum.
 void trOrtho(double left, double right, double bottom, double top, double zNear, double zFar)
          Sets the context to use an orthographic projection.
 void trPerspective(double fovy, double aspect, double zNear, double zFar)
          Convenient way to specify a perspective projection
 void trRasterPos3f(float x, float y, float z, javax.media.opengl.GL gl, javax.media.opengl.glu.GLU glu)
          Tile rendering causes problems with using glRasterPos3f, so you should use this replacement instead
 
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

TileRenderer

public TileRenderer()
Creates a new TileRender object

Method Detail

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 )

Parameters:
width - The width of the tiles. Must not be larger than the GL context
height - The height of the tiles. Must not be larger than the GL context
border - The width of the borders on each tile. This is needed to avoid artifacts when rendering lines or points with thickness > 1.

setTileBuffer

public void setTileBuffer(int format,
                          int type,
                          java.nio.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.

Parameters:
format - Interpreted as in glReadPixels
type - Interpreted as in glReadPixels
image - The buffer itself. Must be large enough to contain a tile, minus any borders

setImageSize

public void setImageSize(int width,
                         int height)
Sets the desired size of the final image

Parameters:
width - The width of the final image
height - The height of the final image

setImageBuffer

public void setImageBuffer(int format,
                           int type,
                           java.nio.Buffer image)
Sets the buffer in which to store the final image

Parameters:
format - Interpreted as in glReadPixels
type - Interpreted as in glReadPixels
image - the buffer itself, must be large enough to hold the final image

getParam

public int getParam(int param)
Gets the parameters of this TileRender object

Parameters:
param - The parameter that is to be retrieved
Returns:
the value of the parameter

setRowOrder

public void setRowOrder(int order)
Sets the order of row traversal

Parameters:
order - The row traversal order, must be eitherTR_TOP_TO_BOTTOM or TR_BOTTOM_TO_TOP

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

Parameters:
left - As in glOrtho
right - As in glOrtho
bottom - As in glOrtho
top - As in glOrtho
zNear - As in glOrtho
zFar - As in glOrtho

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

Parameters:
left - As in glFrustrum
right - As in glFrustrum
bottom - As in glFrustrum
top - As in glFrustrum
zNear - As in glFrustrum
zFar - As in glFrustrum

trPerspective

public void trPerspective(double fovy,
                          double aspect,
                          double zNear,
                          double zFar)
Convenient way to specify a perspective projection

Parameters:
fovy - As in gluPerspective
aspect - As in gluPerspective
zNear - As in gluPerspective
zFar - As in gluPerspective

beginTile

public void beginTile(javax.media.opengl.GL gl)
Begins rendering a tile. The projection matrix stack should be left alone after calling this

Parameters:
gl - The gl context

endTile

public boolean endTile(javax.media.opengl.GL gl)
Must be called after rendering the scene

Parameters:
gl - the gl context
Returns:
true if there are more tiles to be rendered, false if the final image is complete

trRasterPos3f

public void trRasterPos3f(float x,
                          float y,
                          float z,
                          javax.media.opengl.GL gl,
                          javax.media.opengl.glu.GLU glu)
Tile rendering causes problems with using glRasterPos3f, so you should use this replacement instead

Parameters:
x - As in glRasterPos3f
y - As in glRasterPos3f
z - As in glRasterPos3f
gl - The gl context
glu - A GLU object