Tampon nesneleri ve gölgelendiricileri olan hareketli grafikler


9

Sprite sayfalarını gölgelendiriciler ve tamponlarla işlemenin "en iyi" yolu nedir? Anında modda, bir hareketli grafiğin çekildiği zamanki texcoord'larını değiştirmek kolaydır, ancak bunu modern opengl ile nasıl yapacağımı bilmiyorum. Tüm texcoord'ları bir arabellekte saklamalı ve her hareketli grafik için işaretçiyi değiştirmeli miyim yoksa daha iyi bir yol var mı?

Yanıtlar:


11

Looong tamponu "köşe; texcoord" tekrarlayabilirsiniz. Ve sadece endeksleri nasıl söylediğini kullan. Muhtemelen en kolay ve bildiklerinize benzer.

Biraz bellek kaydetmek istiyorsanız. Oldukça düzgün bir çözüm var ve birleştirmek texcoords ile tampon bir sprite sahip ve UV dönüşüm matrisi oluşturmak ve gölgelendirici göndermek ve onunla (köşe gölgeleyici) texcoords çarpmaktır.

Eğer bu konuda iyi değilseniz, kendiniz matris oluşturmak zorunda değilsiniz. Sadece normal GL fonksiyonlarını kullanabilir ve fonksiyon ile matris okuyabilirsiniz glGetFloatv. Bunun gibi:

glGetFloatv (GL_MODELVIEW_MATRIX ,&g_TexCoordMat);

Daha iyi tanımlamak için görüntü oluşturdum. glTranslate ang glScale, UV alanı esasına göre hareket ediyormuş gibi görünebilir.

spritesheet uvs

Gölgelendiriciye matris göndermeyi bilmiyorsanız, sizinle bazı kodları paylaşabilirim.

Düzenleme: Eklenen resim
(kullandığım sprite sayfası için kaynak: funorb.com )


Vay canına, teşekkürler! Mükemmel cevap. Bu çözümü gerçekten çok seviyorum ve işten döndüğümde buna bakacağım. :-) Eğer takılırsam, biraz daha soru ile sizi rahatsız edeceğim.
uggwar

Bu, görebildiğim kadarıyla, her hareketli grafik için bir çizim çağrısı oluşturur. Daha yumuşak bir uygulama için bu sprite'ları toplulaştırmanın bir yolu var mı?
uggwar

@uggwar Çizim örneği mi?
Notabene
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.