🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: pl.comp.lang.java
Article #153673

Re: blitter pod java

#153673
From: obi wan firthe kenobi
Date: Wed, 28 Nov 2012 10:37
268 lines
6186 bytes
W dniu środa, 28 listopada 2012 10:38:40 UTC+1 użytkownik TrzyLinie napisał:
> W dniu 2012-11-27 17:52, obi wan firthe kenobi napisał(a):
> 
> > a masz moze jakis working example ntt?
> 
> 
> 
> import java.awt.Dimension;
> 
> import java.awt.Frame;
> 
> import java.awt.Graphics;
> 
> import java.awt.Image;
> 
> import java.awt.event.WindowAdapter;
> 
> import java.awt.event.WindowEvent;
> 
> import java.awt.image.BufferedImage;
> 
> import java.awt.image.ColorModel;
> 
> import java.awt.image.WritableRaster;
> 
> 
> 
> public class Pixels extends Frame implements Runnable {
> 
> 
> 
> 	private ColorModel cm = null;
> 
> 	private WritableRaster wr = null;
> 
> 	private static int sx = 500, sy = 300;
> 
> 	private int samples[] = new int [sx * sy];
> 
> 	private Image im = null;
> 
> 	
> 
> 	Pixels(String title) {
> 
> 		super(title);
> 
> 		addWindowListener(new WindowAdapter() {
> 
> 			public void windowClosing(WindowEvent we) {
> 
> 				System.exit(1);
> 
> 			}
> 
> 		});
> 
> 		pack();
> 
> 	}
> 
> 	
> 
> 	public Dimension getPreferredSize() {
> 
> 		return new Dimension(sx, sy);
> 
> 	}
> 
> 	
> 
> 	public void addNotify() {
> 
> 		super.addNotify();
> 
> 		cm = ColorModel.getRGBdefault();
> 
> 		wr = cm.createCompatibleWritableRaster(sx, sy);
> 
> 	}
> 
> 	
> 
> 	public void run() {
> 
> 		while (true) {
> 
> 			prepareRandomImage();
> 
> 			repaint();
> 
> 			try {
> 
> 				Thread.sleep(30);
> 
> 			} catch (InterruptedException ignore) {
> 
> 			}
> 
> 		}
> 
> 	}
> 
> 	
> 
> 	private void prepareRandomImage() {
> 
> 		prepareRandomSamples();
> 
> 		wr.setSamples(0, 0, sx, sy, 0, samples); // R
> 
> 		prepareRandomSamples();
> 
> 		wr.setSamples(0, 0, sx, sy, 1, samples); // G
> 
> 		prepareRandomSamples();
> 
> 		wr.setSamples(0, 0, sx, sy, 2, samples); // B
> 
> 		prepareStillSamples(255);
> 
> 		wr.setSamples(0, 0, sx, sy, 3, samples); // alfa
> 
> 		im = new BufferedImage(cm, wr, false, null);
> 
> 	}
> 
> 	
> 
> 	private void prepareRandomSamples() {
> 
> 		for (int i = 0; i < samples.length; i++) {
> 
> 			samples[i] = (int)(Math.random() * 256);
> 
> 		}
> 
> 	}
> 
> 	private void prepareStillSamples(int s) {
> 
> 		for (int i = 0; i < samples.length; i++) {
> 
> 			samples[i] = s;
> 
> 		}
> 
> 	}
> 
> 	
> 
> 	public void update(Graphics g) { // to AWT, więc bez migotania pls
> 
> 		paint(g);
> 
> 	}
> 
> 	
> 
> 	public void paint(Graphics g) {
> 
> 		g.drawImage(im, 0, 0, this);
> 
> 	}
> 
> 	
> 
> 	public static void main(String[] args) {
> 
> 		Pixels p = new Pixels("Pixels");
> 
> 		p.setVisible(true);
> 
> 		new Thread(p).start();
> 
> 	}
> 
> }
> 
> 
> 
> > prawie nie znam javoskiego api i juz zdolalem sie pogubic w 50ciu wersjach streamow imagow i bufferow i ich 2500 mozliwych kombinacjach
> 
> 
> 
> Powyższy przykład niewiele Ci zatem pomoże...
> 
> 
> 
> > nie wiem tez co wpisa w google
> 
> 
> 
> Każdą nazwę klasy z powyższego.
> 
> 
> 
> > poszukuje efektywnej metody wywalania tablicy pixeli[][] na okno w petli
> 
> 
> 
> Powyższe nie jest efektywne. Zakłada jakąś organizację danych pikselowych,
> 
> nieefektywną, ale taka mi przyszła jako pierwsza do głowy.
> 
> 
> 
> > znalazlem ze mozna to zrobic
> 
> >
> 
> >   pixels[][] -> MiemoryImageSource -> Image -> drawImage
> 
> >
> 
> > ale jako ze mam to odpalac w petli nreowanie
> 
> > i nieszczenie tych posrednich dwu opakowan jest troche watpliwe mz
> 
> 
> 
> W Javie nie jest wątpliwe... Powyższy przykład (u mnie) powiększa obciążenie procka
> 
> o 2-5%, a jest beznadziejnie głupi ;)
> 
> 

ok, tnx, popatrze na ten kod i pozniej jeszcze 
odpowiem (ale jest ciekawy bo wlasnie sie
zastanawialem nad drobiazgami typu jak machnac
idle_loop w javie albo skad wziac rand() itp
(w c umiem kodowac w miare dobrze ale java 
to dla mnie swoisty obszar nowosci)

ktory powyższy przykład? ten ktory ja podalem?

zrobilem pozniej cos takiego 

  public void update()
  {

          for(int i=0; i<200*200;i++)
          {
             pixels[i] =  pixels[i] + 100;
          }

          source = new MemoryImageSource(200, 200, pixels, 0, 50);
          image = createImage(source);


          repaint();
 }

  public void paint(Graphics g)
  {
    g.drawImage(image, 0, 0, this);
  }


plus 100 z powodu braku informacji jak tam 
uzyc randa ;-) I to dziala tylko zastanawiam sie, czy jako ze to nie niszczy memory image source i image czy to nie obciaza systemu
(jakies dlugie kolejki instancji do garbage collectora itp) Obciaza o 2% ale na sleepie 30 ms ciekawre jakby to wydalalo jakby poscic na full - ile fps - wlasnie mw taki test chce wykonac





 
Technical Details
Message-ID: <1a9cada4-6f58-4e20-bf2c-66b3ef0bf1d1@googlegroups.com>
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.icm.edu.pl!newsfeed.pionier.net.pl!news.glorb.com!i9no11865496qap.0!news-out.google.com!gf5ni28695207qab.0!nntp.google.com!i9no11950128qap.0!postnews.google.com!glegroupsg2000goo.googlegroups.com!not-for-mail
References: <af2cbccf-c4a3-48bc-b038-da0602ff06be@googlegroups.com> <k92chs$6il$1@dont-email.me> <6fce81bb-3e66-435e-b503-34b8a9ea2e4d@googlegroups.com> <k94m30$gqg$1@dont-email.me>

Show Full Headers
Complete Article Headers
Received: by 10.224.111.140 with SMTP id s12mr12004244qap.5.1354099077135;        Wed, 28 Nov 2012 02:37:57 -0800 (PST)
Received: by 10.49.87.1 with SMTP id t1mr3762101qez.41.1354099077116; Wed, 28 Nov 2012 02:37:57 -0800 (PST)
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.icm.edu.pl!newsfeed.pionier.net.pl!news.glorb.com!i9no11865496qap.0!news-out.google.com!gf5ni28695207qab.0!nntp.google.com!i9no11950128qap.0!postnews.google.com!glegroupsg2000goo.googlegroups.com!not-for-mail
Newsgroups: pl.comp.lang.java
Date: Wed, 28 Nov 2012 02:37:56 -0800 (PST)
In-Reply-To: <k94m30$gqg$1@dont-email.me>
Complaints-To: groups-abuse@google.com
Injection-Info: glegroupsg2000goo.googlegroups.com; posting-host=91.94.193.53; posting-account=Sb6m8goAAABbWsBL7gouk3bfLsuxwMgN
NNTP-Posting-Host: 91.94.193.53
References: <af2cbccf-c4a3-48bc-b038-da0602ff06be@googlegroups.com> <k92chs$6il$1@dont-email.me> <6fce81bb-3e66-435e-b503-34b8a9ea2e4d@googlegroups.com> <k94m30$gqg$1@dont-email.me>
User-Agent: G2/1.0
MIME-Version: 1.0
Message-ID: <1a9cada4-6f58-4e20-bf2c-66b3ef0bf1d1@googlegroups.com>
Subject: Re: blitter pod java
From: obi wan firthe kenobi <profesor.fir@gmail.com>
Injection-Date: Wed, 28 Nov 2012 10:37:57 +0000
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit