🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Thread View: pl.comp.lang.java
6 messages
6 total messages Started by obi wan firthe kenobi Tue, 27 Nov 2012 12:08
blitter pod java
#153667
Author: obi wan firthe kenobi
Date: Tue, 27 Nov 2012 12:08
7 lines
1145 bytes
Troche slabo znam jave (aczkolwiek costam znam)
czy jest w javie mozliwosc wygenerowania obrazu
w postaci dwuwymiarowe tablicy kolorow po czym
'blitniecia' tego do okna? Chodzi mi przy tym 
o standartowe api jak awt/swing..

tnx
Re: blitter pod java
#153669
Author: TrzyLinie
Date: Tue, 27 Nov 2012 12:43
13 lines
1716 bytes
W dniu 2012-11-27 13:08, obi wan firthe kenobi napisał(a):
> Troche slabo znam jave (aczkolwiek costam znam)
> czy jest w javie mozliwosc wygenerowania obrazu
> w postaci dwuwymiarowe tablicy kolorow po czym
> 'blitniecia' tego do okna? Chodzi mi przy tym
> o standartowe api jak awt/swing..

Np. http://docs.oracle.com/javase/7/docs/api/java/awt/image/WritableRaster.html
i metody setPixel/setPixels i potem
http://docs.oracle.com/javase/7/docs/api/java/awt/image/BufferedImage.html

-- 
TrzyLinie
Re: blitter pod java
#153675
Author: obi wan firthe kenobi
Date: Tue, 27 Nov 2012 16:52
37 lines
2499 bytes
W dniu wtorek, 27 listopada 2012 13:43:41 UTC+1 użytkownik TrzyLinie napisał:
> W dniu 2012-11-27 13:08, obi wan firthe kenobi napisał(a):
> 
> > Troche slabo znam jave (aczkolwiek costam znam)
> 
> > czy jest w javie mozliwosc wygenerowania obrazu
> 
> > w postaci dwuwymiarowe tablicy kolorow po czym
> 
> > 'blitniecia' tego do okna? Chodzi mi przy tym
> 
> > o standartowe api jak awt/swing..
> 
> 
> 
> Np. http://docs.oracle.com/javase/7/docs/api/java/awt/image/WritableRaster.html
> 
> i metody setPixel/setPixels i potem
> 
> http://docs.oracle.com/javase/7/docs/api/java/awt/image/BufferedImage.html
> 
> 

a masz moze jakis working example ntt?

prawie nie znam javoskiego api i juz zdolalem sie pogubic w 50ciu wersjach streamow imagow i bufferow i ich 2500 mozliwych kombinacjach

nie wiem tez co wpisa w google 

poszukuje efektywnej metody wywalania tablicy pixeli[][] na okno w petli 

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
Re: blitter pod java
#153676
Author: TrzyLinie
Date: Wed, 28 Nov 2012 09:38
115 lines
4360 bytes
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 ;)

-- 
TrzyLinie
Re: blitter pod java
#153673
Author: 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





 
Re: blitter pod java
#153679
Author: TrzyLinie
Date: Wed, 28 Nov 2012 12:39
17 lines
1843 bytes
W dniu 2012-11-28 11:37, obi wan firthe kenobi napisał(a):
> ktory powyższy przykład? ten ktory ja podalem?

Nie, Ty nie podałeś żadnego przykładu... Cały czas mam na myśli
mój przykład.

>    public void update()

Nieszczęśliwa nazwa... Bo update(Graphics) to jedna z metod
java.awt.Component

> Obciaza o 2% ale na sleepie 30 ms ciekawre jakby to wydalalo jakby poscic na full - ile fps - wlasnie mw taki test chce wykonac

Bez sleep obciąży 100/n, n - liczba wątków procka.

-- 
TrzyLinie
Thread Navigation

This is a paginated view of messages in the thread with full content displayed inline.

Messages are displayed in chronological order, with the original post highlighted in green.

Use pagination controls to navigate through all messages in large threads.

Back to All Threads