Article View: pl.comp.lang.java
Article #153676Re: blitter pod java
From: TrzyLinie
Date: Wed, 28 Nov 2012 09:38
Date: Wed, 28 Nov 2012 09:38
115 lines
4360 bytes
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
Technical Details
Message-ID:
<k94m30$gqg$1@dont-email.me>Path:
mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!agh.edu.pl!news.agh.edu.pl!newsfeed2.atman.pl!newsfeed.atman.pl!news.supermedia.pl!plix.pl!newsfeed2.plix.pl!feed.xsnews.nl!border-3.ams.xsnews.nl!ecngs!feeder2.ecngs.de!feeder.erje.net!eu.feeder.erje.net!eternal-september.org!feeder.eternal-september.org!mx04.eternal-september.org!.POSTED!not-for-mailReferences:
<af2cbccf-c4a3-48bc-b038-da0602ff06be@googlegroups.com> <k92chs$6il$1@dont-email.me> <6fce81bb-3e66-435e-b503-34b8a9ea2e4d@googlegroups.com>Show Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!agh.edu.pl!news.agh.edu.pl!newsfeed2.atman.pl!newsfeed.atman.pl!news.supermedia.pl!plix.pl!newsfeed2.plix.pl!feed.xsnews.nl!border-3.ams.xsnews.nl!ecngs!feeder2.ecngs.de!feeder.erje.net!eu.feeder.erje.net!eternal-september.org!feeder.eternal-september.org!mx04.eternal-september.org!.POSTED!not-for-mail From: TrzyLinie <trzyKASUJlinie@USUNo2.pl> Newsgroups: pl.comp.lang.java Subject: Re: blitter pod java Date: Wed, 28 Nov 2012 10:38:40 +0100 Organization: A noiseless patient Spider Lines: 115 Message-ID: <k94m30$gqg$1@dont-email.me> References: <af2cbccf-c4a3-48bc-b038-da0602ff06be@googlegroups.com> <k92chs$6il$1@dont-email.me> <6fce81bb-3e66-435e-b503-34b8a9ea2e4d@googlegroups.com> Mime-Version: 1.0 Injection-Date: Wed, 28 Nov 2012 09:38:41 +0000 (UTC) Injection-Info: mx04.eternal-september.org; posting-host="01c1cdd8e1becd4e3c1f30adb6a1e0ea"; logging-data="17232"; mail-complaints-to="abuse@eternal-september.org"; posting-account="U2FsdGVkX18mffYU7LAmrHVxADX36ZcN/eIpO9Adg/4=" User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:17.0) Gecko/17.0 Thunderbird/17.0 In-Reply-To: <6fce81bb-3e66-435e-b503-34b8a9ea2e4d@googlegroups.com> Cancel-Lock: sha1:qEjd7hD8LU/o/9xDcAa0MMZZn2o= Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit