Hi,
I’m developping an application that uses bufferStrategy to display its content using double-buffering in a window. But there is indeed a problem I cannot solve when using an 1.5 JVM with the opengl pipeline.
A short example to explain where the problem is. I first took the sample code given in:
http://www.java-gaming.org/forums/index.php?topic=117.0
Then, I changed the content of render() so that it displays a 40x40 image of Duke:
private void render()
{
// If we've lost our video memory, don't bother drawing anything
if( !bufferStrategy.contentsLost() )
{
Graphics2D g = (Graphics2D)(bufferStrategy.getDrawGraphics());
// Clear the drawing buffer to white
g.setColor( Color.white );
g.fillRect( 0, 0, mainFrame.getWidth(), mainFrame.getHeight() );
// Say hello
g.translate(0,27);
g.scale((float)mainFrame.getWidth()/40.0,(float)(mainFrame.getHeight()-27)/40.0);
g.fillRect( 0, 0, mainFrame.getWidth(), mainFrame.getHeight() );
g.drawImage(img,0,0,null);
// We'll stop after 400 frames.
i++;
if( i > 400 )
Running = false;
bufferStrategy.show();
g.dispose();
}
}
I make a vertical translation of 27 because that’s the thickness of my window title - so my Duke isn’t partially masked by it. Then I rescale so that the picture will take the whole window space, and finally, I fill the background with white, and finish by drawing the picture.
Under Mustang, that works perfectly:
http://www.ailesse.be/duke_jdk6.png
Same under 1.5 with the “software” rendering pipeline. But now, with the opengl pipeline, that’s what I get when resizing the window:
http://www.ailesse.be/duke_jdk5.png
What exactly am I doing wrong ? Is there a solution to this ?