I've been trying to work around an issue involving tearing during a buffered 
rendering process in my code. Im using a buffer strategy to page flip to 
BufferedImages to conduct a animation. The problem is that on every interation 
of the render the square box that I render it tearing. I have purchased 
multiple books and have visted multiple web sites on how to solve the tearing 
problem. And I in NO MEANS want to copy or use someone elses code. Pasted below 
is the code that I developed. Any suggestions are welcome. Thanks.

import java.awt.*;
import java.awt.image.*;
import java.awt.event.*;
import javax.swing.*;
import java.io.*;
import java.awt.geom.*;

public class GameEngine implements Runnable
{

        private GraphicsConfiguration[] gc;
        private GraphicsDevice gd;
        private GraphicsEnvironment ge;
        private DisplayMode dm;
        private DisplayMode dms[];
        private JFrame frame;
        private Container c;
        private File file;
        private FileWriter writer;
        private BufferCapabilities buffercap;
        private ImageCapabilities imagecap;
        private Window window;
        private BufferStrategy bufstrat;
        private Thread t;
        private int x = 0;
        private BufferedImage back1;
        private BufferedImage back2;

        public GameEngine()
        {

                t = new Thread(this,"Game Loop");

                try
                {

                SwingUtilities.invokeAndWait(new Runnable(){


                        public void run()
                        {

                                try
                                {

                                        initGraphics();
                                        init();

                                }
                                catch(Exception e)
                                {

                                        e.printStackTrace();
                                }

                        }



                });

                }
                catch(Exception e)
                {

                        e.printStackTrace();
                }


        }

        public void initGraphics()
        {

                ge = GraphicsEnvironment.getLocalGraphicsEnvironment();
                gd = ge.getDefaultScreenDevice();
                dm = gd.getDisplayMode();
                gc = gd.getConfigurations();
                dms = gd.getDisplayModes();
                back1 = new 
BufferedImage(dm.getWidth(),dm.getHeight(),BufferedImage.TYPE_INT_ARGB);
                back2 = new 
BufferedImage(dm.getWidth(),dm.getHeight(),BufferedImage.TYPE_INT_ARGB);


                try
                {

                        file = new File("C:/GraphicsInfo.txt");
                        writer = new FileWriter(file);


                        writer.write("Ideology Software Corporation\n");
                        writer.write("Sample Game Information\n\n");
                        writer.write("Display Information");
                        writer.write("\n\n");
                        writer.write("Width " + dm.getWidth());
                        writer.write("Height " + dm.getHeight());
                        writer.write("\n\n");
                        writer.write("Supported Display Modes");
                        writer.write("\n\n");


                        for(int k = 0;k < dms.length;k++)
                        {
                                writer.write("\n\n");
                                writer.write("Display Mode " + k);
                                writer.write("\n\n");
                                writer.write("Width " + dms[k].getWidth());
                                writer.write("\n");
                                writer.write("Height " + dms[k].getHeight());
                                writer.write("\n");
                                writer.write("Bit Depth " + 
dms[k].getBitDepth());
                                writer.write("\n");
                                writer.write("Refresh Rate " + 
dms[k].getRefreshRate());
                                writer.write("\n");

                        }



                        for(int i = 0;i < gc.length;i++)
                        {


                                Rectangle rect = gc[i].getBounds();
                                buffercap = gc[i].getBufferCapabilities();
                                imagecap = gc[i].getImageCapabilities();
                                writer.write("\n\n");
                                writer.write("Graphics Configuration " + i);
                                writer.write("\n\n");
                                writer.write("Configuration Width " + 
rect.width);
                                writer.write("\n");
                                writer.write("Configuration Height " + 
rect.height);
                                writer.write("\n");
                                writer.write("Configuration x " + rect.x);
                                writer.write("\n");
                                writer.write("Configuration y " + rect.y);
                                rect = ge.getMaximumWindowBounds();
                                writer.write("Max Window Configuraiton\n\n");
                                writer.write("\n");
                                writer.write("Max Window Width " + rect.width);
                                writer.write("\n");
                                writer.write("Max Window Height " + 
rect.height);
                                writer.write("\n\n");
                                writer.write("Buffer Capabilities");
                                writer.write("\n");
                                writer.write("FullScreen Required " + 
buffercap.isFullScreenRequired());
                                writer.write("\n");
                                writer.write("MultiBuffer Support " + 
buffercap.isMultiBufferAvailable());
                                writer.write("\n");
                                writer.write("Page Flipping Support " + 
buffercap.isPageFlipping());
                                writer.write("\n\n");
                                writer.write("Image Capabilities");
                                writer.write("\n");
                                writer.write("Acceration Support " + 
imagecap.isAccelerated());
                                writer.write("\n");
                                writer.write("Volatile Image Support " + 
imagecap.isTrueVolatile());
                                writer.write("\n\n");



                        }

                        writer.close();




                }
                catch(Exception e)
                {


                        e.printStackTrace();

                }



        }

        public void init()
        {

                frame = new JFrame();
                frame.setSize(800,800);
                frame.setTitle("Game Application");
                frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
                frame.setIgnoreRepaint(true);
                frame.setUndecorated(true);
                c = frame.getContentPane();
                c.setLayout(null);
                c.setBackground(new Color(0,0,0));
                frame.setResizable(true);
                frame.setVisible(true);

                if(gd.isFullScreenSupported())
                {

                        gd.setFullScreenWindow(frame);

                }


                window = gd.getFullScreenWindow();
                window.createBufferStrategy(2);
                bufstrat = window.getBufferStrategy();
                t.start();

        }

        public boolean renderBackOne()
        {
                if(back1 != null)
                {

                Graphics2D backg1 = back1.createGraphics();
                backg1.setColor(new Color(255,255,255));
                backg1.fillRect(x,100,100,100);


                        return true;

                }
                else
                {

                        return false;
                }

        }

        public boolean renderBackTwo()
        {

                if(back2 != null)
                {

                Graphics2D backg2 = back2.createGraphics();
                backg2.setColor(new Color(255,255,255));
                backg2.fillRect(x,100,100,100);

                        return true;

                }
                else
                {

                        return false;
                }




        }


        public void update()
        {



                if(!bufstrat.contentsLost())
                {


                        bufstrat.show();


                }

        }

        public void render()
        {

                Graphics2D g2 = (Graphics2D)bufstrat.getDrawGraphics();
                g2.setColor(new Color(255,255,255));

                if(g2 != null)
                {

                        if(renderBackOne())
                        {

                                g2.drawImage(back1,new 
AffineTransformOp(g2.getTransform(),g2.getRenderingHints()),0,0);
                        }
                        else
                        {
                                g2.drawImage(back2,new 
AffineTransformOp(g2.getTransform(),g2.getRenderingHints()),0,0);

                        }




                }




        }

        public void run()
        {

                try
                {

                        for(;;)
                        {

                                Thread.sleep(750);
                                update();
                                render();
                                x++;


                        }


                }
                catch(Exception e)
                {

                        e.printStackTrace();
                }
        }

        public static void main(String args[])
        {

                GameEngine gameengine = new GameEngine();
        }
}
[Message sent by forum member 'xeondeveloper' (xeondeveloper)]

http://forums.java.net/jive/thread.jspa?messageID=108465

===========================================================================
To unsubscribe, send email to [EMAIL PROTECTED] and include in the body
of the message "signoff JAVA2D-INTEREST".  For general help, send email to
[EMAIL PROTECTED] and include in the body of the message "help".

Reply via email to