aboutsummaryrefslogtreecommitdiffstats
path: root/src/jogl/classes/com/jogamp/opengl/util/TileRenderer.java
diff options
context:
space:
mode:
authorSven Gothel <[email protected]>2013-09-07 19:47:28 +0200
committerSven Gothel <[email protected]>2013-09-07 19:47:28 +0200
commit4965923722fe44dfcf7eaff16cd5449707773123 (patch)
tree21645b2ecb0a3b9ba14ed1b0e24cb49c4813e167 /src/jogl/classes/com/jogamp/opengl/util/TileRenderer.java
parent6fe3e99dab9721294a3bf72eaea77af33afc9481 (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.java20
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);