Vysvětlení zobrazení grafiky – Java – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Vysvětlení zobrazení grafiky – Java – Fórum – Programujte.comVysvětlení zobrazení grafiky – Java – Fórum – Programujte.com

 

felix
~ Anonymní uživatel
17 příspěvků
23. 8. 2013   #1
-
0
-

Potřeboval bych vysvětlit jak funguje tato část kódu, nebo nějaký tutorial klidně v angličtině ;).

BufferStrategy bs=this.getBufferStrategy();
		if(bs==null){
			createBufferStrategy(3);
			return;
		}
		
		Graphics g=bs.getDrawGraphics();
		/////////////////////////////////////////////
		g.drawImage(image, 0, 0, getWidth(), getHeight(), this);
		/////////////////////////////////////////////
		
		g.dispose();
		bs.show();
Nahlásit jako SPAM
IP: 194.12.42.–
goddard
~ Anonymní uživatel
41 příspěvků
23. 8. 2013   #2
-
0
-

http://docs.oracle.com/javase/6/docs/api/java/awt/image/BufferStrategy.html

docs.oracle.com/javase/6/docs/api/java/awt/Canvas.html

ziskas aktualni pocet video bufferu a ulozis si ho. pokud neexistuje / nedokazes ho ziskat, tak vytvoris trojity video buffer.

pote ziskas  graficky kontext abys mohl kreslit a kreslis nejaky obrazek o dane sirce a vysce na souradnice 0, 0 - cili levy horni roh obrazovky. nakonec ten kontext zahodis (pokud uz nechces kreslit) abys zbytecne neplytval prostredkama.

nakonec prepnes buffer (at uz kopirovanim video pameti nebo jen otocenim ukazatele)

Nahlásit jako SPAM
IP: 94.112.88.–
sleepy0
Stálý člen
23. 8. 2013   #3
-
0
-

BufferStrategy sa stara o buffery (resp. double-buffering a page-flipping) do ktorych sa da kreslit a potom to spetne mozes zobrazit na obrazovku. Ide o to aby pri prekreslovani obrazku nevznikali artefakty na obrazovke. Cize vypytas si BufferedStrategy ak je null vytvoris novy a prerusis metodu. Z bs si vypitas objekt Graphics a do neho renderujes ten potom uvolnis a nakoniec to zobrazis na obrazovke.

http://docs.oracle.com/javase/tutorial/extra/fullscreen/bufferstrategy.html

http://www.realapplets.com/tutorial/doublebuffering.html

http://docs.oracle.com/javase/tutorial/extra/fullscreen/doublebuf.html

Nahlásit jako SPAM
IP: 158.195.204.–
felix
~ Anonymní uživatel
17 příspěvků
24. 8. 2013   #4
-
0
-

Zkusil jsme udělat jednoduchý program, ale nefungoval. Chyba se nejspíš bude vyskytovat ve vytvoření grafiky v metodě render().

import java.awt.Canvas;
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.image.BufferStrategy;
import java.awt.image.BufferedImage;

import javax.swing.JFrame;

public class main extends Canvas {
	
	public static final int WIDTH=320;
	public static final int HEIGHT=WIDTH/16*9;
	public static final int SCALE=2;
	private BufferedImage image=new BufferedImage(HEIGHT, WIDTH, BufferedImage.TYPE_INT_RGB);

	public static void main(String[] args) {
		
		main main=new main();
		
		main.setPreferredSize(new Dimension(WIDTH*SCALE, HEIGHT*SCALE));
		main.setMaximumSize(new Dimension(WIDTH*SCALE, HEIGHT*SCALE));
		main.setMinimumSize(new Dimension(WIDTH*SCALE, HEIGHT*SCALE));
		
		JFrame frame=new JFrame("pokus");
		
		frame.add(main);
		frame.pack();
		frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		frame.setResizable(false);
		frame.setLocationRelativeTo(null);
		frame.setVisible(true);
		main.render();

	}
	private void render(){
		
			BufferStrategy bs=this.getBufferStrategy();
			if(bs==null){
				createBufferStrategy(3);
				return;
			}
		
			Graphics g=bs.getDrawGraphics();
			/////////////////////////////////////////////
			g.drawImage(image, 0, 0, getWidth(), getHeight(), this);
			/////////////////////////////////////////////
		
			g.dispose();
			bs.show();
	}
}
Nahlásit jako SPAM
IP: 194.12.42.–
felix
~ Anonymní uživatel
17 příspěvků
24. 8. 2013   #5
-
0
-

Už jsem na to přišel BufferStrategy musí být uzavřen v cyklu;).

Nahlásit jako SPAM
IP: 194.12.42.–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 32 hostů

Podobná vlákna

Pridavani grafiky — založil .

Hledáme 3D grafiky — založil UnicornGames

Hledám grafiky — založil Bury

Blikani grafiky v C# — založil alois

Moderátoři diskuze

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý