[gameprogrammer] Re: A newbie Java Question - GUI/Animation etc...
- From: Stephen & Kelly <gp@xxxxxxxxxxxxxxxxxxxxxxxx>
- To: gameprogrammer@xxxxxxxxxxxxx
- Date: Wed, 06 Feb 2008 19:42:01 +0000
Richard,
All you need to do in Java to get double-buffering is something like:-
public class MyClass extends JFrame { // You can extend any Component IIRC
private BufferStrategy BS;
public MyClass() {
this.createBufferStrategy(2); // Number of buffers
BS = this.getBufferStrategy();
}
private mainGameLoop() {
while (true) {
Graphics g = BS.getDrawGraphics();
// Do all drawing using g
BS.show();
}
}
}
That's all there is to it, and you don't need to download any API's or
anything. Good luck with the Java; I think it's great for games.
Steve
richard sabbarton wrote:
Hi Tom,
I downloaded the Java3D API from Sun. It looks good but I think it
was a bit much for what I was looking for. Anyway, after a little
further digging I managed to work out how to do what I was trying to
do.
The key to getting rid of the flicker was not using the paint()
function but instead, using my own.
Firstly, I created a new Image and then obtained the Graphics
interface for the image. This gave me my offscreen location to
assemble my GUI. I then use this image and draw it to the Graphics
interface of my Applet
// Variables and members
Image offScreenImage;
Graphics offScreenGraphics;
Graphics onScreenGraphics;
In the init function I run the following:
offScreenImage = createImage( width, height );
offScreenGraphics = offScreenImage.getGraphics();
onScreenGraphics = this.getGraphics();
I then setup a timer to keep the screen up-to-date every xxx
milliseconds which basically runs the following:
// Draw everything I need to my offscreen Graphics Interface
offScreenGraphics.drawImage( etc. etc. etc. );
offScreenGraphics.drawImage( etc. etc. etc. );
offScreenGraphics.drawImage( etc. etc. etc. );
// Then draw the whole thing to screen with the Image Interface
onScreenGraphics.drawImage(offScreenImage, xxx , yyyy , this );
Seems to work quite well for simple graphics and GUI etc. If I want
anything more complex then I will go down the Java3D route but for now
this will do.
Regards
Richard
On 04/02/2008, Tom Clifford <tjclifford@xxxxxxxxx> wrote:
Java has it's own Java3D interface, found at:
http://java.sun.com/products/java-media/3D/
It allows you to do what is called active rendering,
which is similar to the c/c++ WinMain/WndProc loops,
that uses double-buffering,
or you can create the objects you want and allow
Java3D to do the looping for you, while doing
animation with their Behavior objects.
There are some good java examples with source
code, at Killer Game Programming with Java, by
Andrew Davison
O'Reilly, May 2005
ISBN: 0-596-00730-2
http://www.oreilly.com/catalog/killergame/
Web Site for the book:
http://fivedots.coe.psu.ac.th/~ad/jg
code downloads and instructions at:
http://fivedots.coe.psu.ac.th/~ad/jg/code/
Tom C.
--- richard sabbarton <richard.sabbarton@xxxxxxxxx>
wrote:
Hi Guys,
In C++ on windows I would use animation by creating
a compatible
device context in memory with CreateCompatibleDC().
I would write my
game and all of its elements to the MemoryDC and
then use something
like BitBlt() to push it to my main DC.
I have recently started learning Java and I want to
perform a similar
function. I want to write all of the elements to
memory and then
transfer it to the screen every x milliseconds.
This is to eliminate
flicker etc.
I have been looking online through tutorials etc.
and I can't seem to
find a description of how to do this. Do I need to
use java.awt or
should I use javax.swing.
Any thoughts on how to do this or suggestions on
greating a game
display in Java?
Initially this is for display in an Applet in a web
page.
Regards
Richard
---------------------
To unsubscribe go to
http://gameprogrammer.com/mailinglist.html
____________________________________________________________________________________
Be a better friend, newshound, and
know-it-all with Yahoo! Mobile. Try it now.
http://mobile.yahoo.com/;_ylt=Ahu06i62sR8HDtDypao8Wcj9tAcJ
---------------------
To unsubscribe go to http://gameprogrammer.com/mailinglist.html
---------------------
To unsubscribe go to http://gameprogrammer.com/mailinglist.html
---------------------
To unsubscribe go to http://gameprogrammer.com/mailinglist.html
- Follow-Ups:
- [gameprogrammer] Re: A newbie Java Question - GUI/Animation etc...
- From: richard sabbarton
- References:
- [gameprogrammer] A newbie Java Question - GUI/Animation etc...
- From: richard sabbarton
- [gameprogrammer] Re: A newbie Java Question - GUI/Animation etc...
- From: Tom Clifford
- [gameprogrammer] Re: A newbie Java Question - GUI/Animation etc...
- From: richard sabbarton
Other related posts:
- » [gameprogrammer] A newbie Java Question - GUI/Animation etc...
- » [gameprogrammer] Re: A newbie Java Question - GUI/Animation etc...
- » [gameprogrammer] Re: A newbie Java Question - GUI/Animation etc...
- » [gameprogrammer] Re: A newbie Java Question - GUI/Animation etc...
- » [gameprogrammer] Re: A newbie Java Question - GUI/Animation etc...
- » [gameprogrammer] Re: A newbie Java Question - GUI/Animation etc...
- » [gameprogrammer] Re: A newbie Java Question - GUI/Animation etc...
- » [gameprogrammer] Re: A newbie Java Question - GUI/Animation etc...
- » [gameprogrammer] Re: A newbie Java Question - GUI/Animation etc...
- » [gameprogrammer] Re: A newbie Java Question - GUI/Animation etc...
- » [gameprogrammer] Re: A newbie Java Question - GUI/Animation etc...
- » [gameprogrammer] Re: A newbie Java Question - GUI/Animation etc...
- » [gameprogrammer] Re: A newbie Java Question - GUI/Animation etc...
- » [gameprogrammer] Re: A newbie Java Question - GUI/Animation etc...
- » [gameprogrammer] Re: A newbie Java Question - GUI/Animation etc...
- » [gameprogrammer] Re: A newbie Java Question - GUI/Animation etc...
- » [gameprogrammer] Re: A newbie Java Question - GUI/Animation etc...
- » [gameprogrammer] Re: A newbie Java Question - GUI/Animation etc...
Hi Tom,
I downloaded the Java3D API from Sun. It looks good but I think it
was a bit much for what I was looking for. Anyway, after a little
further digging I managed to work out how to do what I was trying to
do.
The key to getting rid of the flicker was not using the paint()
function but instead, using my own.
Firstly, I created a new Image and then obtained the Graphics
interface for the image. This gave me my offscreen location to
assemble my GUI. I then use this image and draw it to the Graphics
interface of my Applet
// Variables and members
Image offScreenImage;
Graphics offScreenGraphics;
Graphics onScreenGraphics;
In the init function I run the following:
offScreenImage = createImage( width, height );
offScreenGraphics = offScreenImage.getGraphics();
onScreenGraphics = this.getGraphics();
I then setup a timer to keep the screen up-to-date every xxx
milliseconds which basically runs the following:
// Draw everything I need to my offscreen Graphics Interface
offScreenGraphics.drawImage( etc. etc. etc. );
offScreenGraphics.drawImage( etc. etc. etc. );
offScreenGraphics.drawImage( etc. etc. etc. );
// Then draw the whole thing to screen with the Image Interface
onScreenGraphics.drawImage(offScreenImage, xxx , yyyy , this );
Seems to work quite well for simple graphics and GUI etc. If I want
anything more complex then I will go down the Java3D route but for now
this will do.
Regards
Richard
On 04/02/2008, Tom Clifford <tjclifford@xxxxxxxxx> wrote:
Java has it's own Java3D interface, found at: http://java.sun.com/products/java-media/3D/ It allows you to do what is called active rendering, which is similar to the c/c++ WinMain/WndProc loops, that uses double-buffering, or you can create the objects you want and allow Java3D to do the looping for you, while doing animation with their Behavior objects. There are some good java examples with source code, at Killer Game Programming with Java, by Andrew Davison O'Reilly, May 2005 ISBN: 0-596-00730-2 http://www.oreilly.com/catalog/killergame/ Web Site for the book: http://fivedots.coe.psu.ac.th/~ad/jg code downloads and instructions at: http://fivedots.coe.psu.ac.th/~ad/jg/code/ Tom C. --- richard sabbarton <richard.sabbarton@xxxxxxxxx> wrote:Hi Guys, In C++ on windows I would use animation by creating a compatible device context in memory with CreateCompatibleDC(). I would write my game and all of its elements to the MemoryDC and then use something like BitBlt() to push it to my main DC. I have recently started learning Java and I want to perform a similar function. I want to write all of the elements to memory and then transfer it to the screen every x milliseconds. This is to eliminate flicker etc. I have been looking online through tutorials etc. and I can't seem to find a description of how to do this. Do I need to use java.awt or should I use javax.swing. Any thoughts on how to do this or suggestions on greating a game display in Java? Initially this is for display in an Applet in a web page. Regards Richard --------------------- To unsubscribe go to http://gameprogrammer.com/mailinglist.html____________________________________________________________________________________ Be a better friend, newshound, and know-it-all with Yahoo! Mobile. Try it now. http://mobile.yahoo.com/;_ylt=Ahu06i62sR8HDtDypao8Wcj9tAcJ --------------------- To unsubscribe go to http://gameprogrammer.com/mailinglist.html
--------------------- To unsubscribe go to http://gameprogrammer.com/mailinglist.html
- [gameprogrammer] Re: A newbie Java Question - GUI/Animation etc...
- From: richard sabbarton
- [gameprogrammer] A newbie Java Question - GUI/Animation etc...
- From: richard sabbarton
- [gameprogrammer] Re: A newbie Java Question - GUI/Animation etc...
- From: Tom Clifford
- [gameprogrammer] Re: A newbie Java Question - GUI/Animation etc...
- From: richard sabbarton