That’s fine, but it would help better if you posted your code where you implemented your scaling.
This is how I did it, using 1.4.02_04:
import javax.swing.*;
import java.awt.*;
import java.awt.image.*;
import java.util.Random;
public class ImageTest3 extends JFrame implements Runnable
{
Image bb;
Image scaleImage;
static final boolean BUFFER_STRATEGY = true;
static final int BLITS_PER_FRAME = 1;
static final int WINDOW_WIDTH = 800, WINDOW_HEIGHT = 600;
static final int BEFORE_SCALE_WIDTH = 128, BEFORE_SCALE_HEIGHT = 128;
static final int AFTER_SCALE_WIDTH = WINDOW_WIDTH;
static final int AFTER_SCALE_HEIGHT = WINDOW_HEIGHT;
public static void main(String[] args)
{
System.setProperty("sun.java2d.ddscale", "true"); // TURN THIS OFF TO SEE THE BEFORE & AFTER HARDWARE SCALING FPS
System.setProperty("sun.java2d.accthreshold", "0");
System.setProperty("sun.java2d.translaccel", "true");
Thread t = new Thread(new ImageTest3());
t.setPriority(Thread.MIN_PRIORITY);
t.start();
}
public ImageTest3()
{
setIgnoreRepaint(true);
getContentPane().setLayout(null);
setBounds(new Rectangle(0, 0, WINDOW_WIDTH, WINDOW_HEIGHT));
setVisible(true);
scaleImage = getGraphicsConfiguration().createCompatibleVolatileImage(BEFORE_SCALE_WIDTH, BEFORE_SCALE_HEIGHT);
Graphics g = scaleImage.getGraphics();
g.setColor(Color.GREEN);
g.fillRect(0, 0, BEFORE_SCALE_HEIGHT, BEFORE_SCALE_HEIGHT);
g.dispose();
if(BUFFER_STRATEGY)
{
createBufferStrategy(2);
}
else
{
bb = getGraphicsConfiguration().createCompatibleVolatileImage(WINDOW_WIDTH, WINDOW_HEIGHT);
}
setDefaultCloseOperation(EXIT_ON_CLOSE);
}
public void run()
{
Random rand = new Random();
long lastTime = System.currentTimeMillis();
int frameCount = 0;
String fps = "n/a";
while(true)
{
frameCount++;
long time = System.currentTimeMillis();
if(time-lastTime > 1000) //once a second
{
//update the fps counter
fps = Integer.toString(frameCount);
frameCount=0;
lastTime+=1000;
}
Graphics bg = BUFFER_STRATEGY?getBufferStrategy().getDrawGraphics():bb.getGraphics(); //buffers Graphics
bg.setColor(Color.WHITE);
bg.fillRect(0, 0, WINDOW_WIDTH, WINDOW_HEIGHT);
for(int i=0; i < BLITS_PER_FRAME; i++)
{
bg.drawImage(scaleImage, (WINDOW_WIDTH - AFTER_SCALE_WIDTH)/2,
(WINDOW_HEIGHT - AFTER_SCALE_HEIGHT)/2, WINDOW_WIDTH, WINDOW_HEIGHT, null);
}
bg.setColor(Color.RED);
bg.drawString(fps, WINDOW_WIDTH/2 - 50, WINDOW_HEIGHT/2);
bg.dispose();
if(BUFFER_STRATEGY)
{
getBufferStrategy().show();
}
else
{
Graphics g = getGraphics();
g.drawImage(bb, 0, 0, null);
g.dispose();
}
Thread.yield();
}
}
}
Just cut and paste. The scores you get when you turn off and on hardware scaling should be drastic.