diff options
author | Sven Gothel <[email protected]> | 2013-09-07 19:47:28 +0200 |
---|---|---|
committer | Sven Gothel <[email protected]> | 2013-09-07 19:47:28 +0200 |
commit | 4965923722fe44dfcf7eaff16cd5449707773123 (patch) | |
tree | 21645b2ecb0a3b9ba14ed1b0e24cb49c4813e167 /src/jogl/classes/com/jogamp/opengl/util/TileRenderer.java | |
parent | 6fe3e99dab9721294a3bf72eaea77af33afc9481 (diff) |
TileRenderer*: Fix FBO MSAA use-case, i.e. call swapBuffers() before endTile(); Enhance unit tests for MSAA, also add TileRendererBase.TileRendererNotify to GearsES2
GL[Auto]Drawable.swapBuffers() must be called before endTile().
This is especially important if using multisampling offscreen FBO drawables,
where swapBuffers() triggers the <i>downsampling</i> to the readable sampling sink.
Otherwise, we will be 'one tile behind' !
Diffstat (limited to 'src/jogl/classes/com/jogamp/opengl/util/TileRenderer.java')
-rw-r--r-- | src/jogl/classes/com/jogamp/opengl/util/TileRenderer.java | 20 |
1 files changed, 8 insertions, 12 deletions
diff --git a/src/jogl/classes/com/jogamp/opengl/util/TileRenderer.java b/src/jogl/classes/com/jogamp/opengl/util/TileRenderer.java index 46a1e2452..e24fa9706 100644 --- a/src/jogl/classes/com/jogamp/opengl/util/TileRenderer.java +++ b/src/jogl/classes/com/jogamp/opengl/util/TileRenderer.java @@ -104,7 +104,6 @@ public class TileRenderer extends TileRendererBase { */ public static final int TR_BOTTOM_TO_TOP = 16; - private static final boolean DEBUG = true; private static final int DEFAULT_TILE_WIDTH = 256; private static final int DEFAULT_TILE_HEIGHT = 256; private static final int DEFAULT_TILE_BORDER = 0; @@ -259,9 +258,6 @@ public class TileRenderer extends TileRendererBase { setup(); } - final int preRow = currentRow; - final int preColumn = currentColumn; - /* which tile (by row and column) we're about to render */ if (rowOrder == TR_BOTTOM_TO_TOP) { currentRow = currentTile / columns; @@ -293,20 +289,16 @@ public class TileRenderer extends TileRendererBase { currentTileXPos = currentColumn * tileSizeNB.getWidth() + offsetX; currentTileYPos = currentRow * tileSizeNB.getHeight() + offsetY; - final int preTileWidth = currentTileWidth; - final int preTileHeight = currentTileHeight; - /* Save tile size, with border */ currentTileWidth = tW; currentTileHeight = tH; + gl.glViewport( 0, 0, tW, tH ); + if( DEBUG ) { - System.err.println("Tile["+currentTile+"]: off "+offsetX+"/"+offsetX+", ["+preColumn+"]["+preRow+"] "+preTileWidth+"x"+preTileHeight+ - " -> ["+currentColumn+"]["+currentRow+"] "+currentTileXPos+"/"+currentTileYPos+", "+tW+"x"+tH+ - ", image "+imageSize.getWidth()+"x"+imageSize.getHeight()); + System.err.println("TileRenderer.begin.X: "+this.toString()); } - - gl.glViewport( 0, 0, tW, tH ); + // Do not forget to issue: // reshape( 0, 0, tW, tH ); // which shall reflect tile renderer fileds: currentTileXPos, currentTileYPos and imageSize @@ -323,6 +315,10 @@ public class TileRenderer extends TileRendererBase { // be sure OpenGL rendering is finished gl.glFlush(); + if( DEBUG ) { + System.err.println("TileRenderer.end.0: "+this.toString()); + } + // save current glPixelStore values psm.save(gl); psm.setPackAlignment(gl, 1); |