summaryrefslogtreecommitdiffstats
path: root/src/demos/j2d
diff options
context:
space:
mode:
authorKenneth Russel <[email protected]>2007-01-06 00:43:17 +0000
committerKenneth Russel <[email protected]>2007-01-06 00:43:17 +0000
commit2b34526dd5c5274d14862f23b81f79dc7fbbe469 (patch)
tree4d1122217ee0b7e4ae1828b2bf0f2f2e58236d82 /src/demos/j2d
parenta4d2028b3827d9fe6041caf9cdf8e30fccdd87c2 (diff)
With help from Chris Campbell, fixed incredibly stupid bug on my part
where the new Java 2D TextureRenderer was destroying and re-creating the OpenGL texture every frame. This was why the Java 2D Overlay class was so expensive, and why the TextRenderer wasn't as fast as it seemed it should be. Fixed bugs in all of the Java 2D demos which were covered up by this implicit sync, as well as in the TextRenderer class itself where it was missing a key sync operation. Added code to the Texture.updateSubImage() implementation to clip the incoming rectangle to the bounds of the input data and texture, to keep OpenGL from dropping almost-valid updates on the floor. Ran all of the Java 2D integration demos to verify these fixes. git-svn-id: file:///usr/local/projects/SUN/JOGL/git-svn/../svn-server-sync/jogl-demos/trunk@198 3298f667-5e0e-4b4a-8ed4-a3559d26a5f4
Diffstat (limited to 'src/demos/j2d')
-rwxr-xr-xsrc/demos/j2d/TestOverlay.java19
-rwxr-xr-xsrc/demos/j2d/TestTextRenderer.java2
-rwxr-xr-xsrc/demos/j2d/TestTextureRenderer.java1
3 files changed, 13 insertions, 9 deletions
diff --git a/src/demos/j2d/TestOverlay.java b/src/demos/j2d/TestOverlay.java
index 5faa0d5..adc8ba7 100755
--- a/src/demos/j2d/TestOverlay.java
+++ b/src/demos/j2d/TestOverlay.java
@@ -103,6 +103,8 @@ public class TestOverlay implements GLEventListener {
private int frameCount;
private DecimalFormat format = new DecimalFormat("####.00");
+ private Rectangle fpsBounds;
+
public void init(GLAutoDrawable drawable) {
GL gl = drawable.getGL();
gl.setSwapInterval(0);
@@ -134,23 +136,20 @@ public class TestOverlay implements GLEventListener {
FontRenderContext frc = g2d.getFontRenderContext();
String fpsString = "FPS: " + format.format(fps);
GlyphVector gv = font.createGlyphVector(frc, TEST_STRING);
- int x = drawable.getWidth() - 200;
+ fpsBounds = gv.getPixelBounds(frc, 0, 0);
+ int x = drawable.getWidth() - fpsBounds.width - 20;
int y = drawable.getHeight() - 20;
- Rectangle fpsBounds = gv.getPixelBounds(frc, x, y);
g2d.setFont(font);
g2d.setComposite(AlphaComposite.Src);
g2d.setColor(TRANSPARENT_BLACK);
- g2d.fillRect(fpsBounds.x, fpsBounds.y, fpsBounds.width, fpsBounds.height);
+ g2d.fillRect(x + fpsBounds.x, y + fpsBounds.y, fpsBounds.width, fpsBounds.height);
g2d.setColor(Color.WHITE);
g2d.drawString(fpsString, x, y);
- overlay.sync(fpsBounds.x, fpsBounds.y, fpsBounds.width, fpsBounds.height);
+ overlay.sync(x + fpsBounds.x, y + fpsBounds.y, fpsBounds.width, fpsBounds.height);
}
time.update();
- // Move down the text bounds
- lastTextBounds = textBounds;
-
g2d.setFont(font);
g2d.setComposite(AlphaComposite.Src);
if (overlay.contentsLost()) {
@@ -191,7 +190,11 @@ public class TestOverlay implements GLEventListener {
if (lastTextBounds != null) {
union.add(lastTextBounds);
}
- overlay.sync(union.x, union.y, union.width, union.height);
+ // Put a little slop around this text due to apparent rounding errors
+ overlay.sync(union.x, union.y, union.width + 10, union.height + 10);
+
+ // Move down the text bounds
+ lastTextBounds = textBounds;
// Draw the overlay
overlay.drawAll();
diff --git a/src/demos/j2d/TestTextRenderer.java b/src/demos/j2d/TestTextRenderer.java
index 853009c..0356606 100755
--- a/src/demos/j2d/TestTextRenderer.java
+++ b/src/demos/j2d/TestTextRenderer.java
@@ -134,7 +134,7 @@ public class TestTextRenderer implements GLEventListener {
fpsText = "FPS: " + format.format(fps);
if (fpsWidth == 0) {
// Place it at a fixed offset wrt the lower right corner
- fpsWidth = (int) renderer.getBounds("FPS: 1000.00").getWidth();
+ fpsWidth = (int) renderer.getBounds("FPS: 10000.00").getWidth();
}
}
diff --git a/src/demos/j2d/TestTextureRenderer.java b/src/demos/j2d/TestTextureRenderer.java
index 09f3fd8..596115e 100755
--- a/src/demos/j2d/TestTextureRenderer.java
+++ b/src/demos/j2d/TestTextureRenderer.java
@@ -151,6 +151,7 @@ public class TestTextureRenderer implements GLEventListener {
g2d.fillRect(fpsBounds.x, fpsBounds.y, fpsBounds.width, fpsBounds.height);
g2d.setColor(Color.WHITE);
g2d.drawString(fpsString, 10, 100);
+ renderer.sync(fpsBounds.x, fpsBounds.y, fpsBounds.width, fpsBounds.height);
}
time.update();