2010-04-21 21 views
5

Ekranda içerik oluşturmak için java'da ve kullanılan BufferedImages'da oyun yapıyorum. Oyunun çalıştırılacağı düşük son makinalarda performans sorunları yaşadım, dolayısıyla normalde daha hızlı olan VolatileImage'a geçtim. Ama aslında her şeyi yavaşlatıyorlar.Java: VolatileImage BufferedImage'den daha yavaş

Görüntüler, GraphicsConfiguration.createCompatibleVolatileImage (...) ile oluşturulmuş ve Graphics.drawImage(...) ile ekrana çizilir (hangisinin daha özel olduğunu görmek için aşağıdaki bağlantıya bakın). Çift tampon kullanarak bir Tuval üzerine çizilirler.

Burada neyin yanlış gittiğine dair bir fikri var mı?

+0

Aynısını fark ettim. – Hardcoded

+0

Grafik kartında hafızanız yetersizse, yardımcı olmayacaktır. IIRC, 'BufferedImage' biraz hızlandırdı, bu yüzden fark bir zamanki kadar büyük olmayabilir. –

+0

@Norswap: Gerçekten bunun için harika bir yanıt bulmak için açık kaynak kodlu Java oyunlarını (bazılarında kesinlikle var) veya bazı harika harika demoları ("demo sahnesinden") bulmayı ve neyi anlamaya çalıştığınızı düşünüyorum. Onlar yaptılar. Oyunları çok uzun zaman önce * çok * egzotik donanımda (Amiga, SNES, mod 13x vb.) Programlıyorum ve gösteriyorum. Java’da "pikselleri" doğru şekilde nasıl kullanacağımı bilmiyorum. Bu, bir zamanlar Java'nın “üstesinden geldiği” ve gereksiz yere karmaşık olduğu bir alan. Ben gerçekten size yardım edebilmek için burada birileri için nefesimi tutmuyorum. – SyntaxT3rr0r

cevap

6

Muhtemelen kodunuz hızlandırılmış ve hızlandırılmamış işlemleri karıştırıyor.

Bu document mutlaka okunmalıdır. Özellikle Bölüm 3.2, hızlandırılmış Java grafikleriyle çalışan herkes için önemlidir.

+0

Ölçeklendirmenin (kırpma anlamında, sorudaki bağlantıya bakın) bir görüntünün hızlandırılmamış bir işlem olması mümkün mü? Sprite sayfalarını kullandığım için, her çizimin, resmin bir bölümünü ekrana çekmek için etkili bir şekilde seçmesi gerekir. – Norswap

İlgili konular