2012-03-18 16 views
8

Merhaba Çapraz platform yetenekleri nedeniyle Firemonkey kullanıyorum. Bir parçacık sistemi oluşturmak istiyorum. Şimdi partikülleri hızlı görüntülemek için yeterince iyi çalışan bir TMesh kullanıyorum. Her parçacık, iki dokulu üçgenden ağda temsil edilir. Farklı doku koordinatlarını kullanarak aynı örgü ile birçok farklı parçacık tipi gösterebilirim. Sorun şu ki, her parçacık kendi şeffaflığına/opaklığına sahip olabilir. Şu andaki yaklaşımımla, her bir üçgen için (veya hatta köşe noktası) tek tek traspartı ayarlayamıyorum. Ne yapabilirim? TMMT.Data.VertexBuffer'da Diffuse veya diğer doku grupları (TexCoord1-3) gibi başka özellikler bulunduğunu fark ettim, ancak bu özellikler TMesh'de kullanılmıyor (hatta initalize edilmiyor). TMesh'den miras alarak bu davranışı basitçe değiştirmek kolay değildir. VertextBuffer'ı daha fazla özellik ile başlatmak için bir alt seviye kontrolünden miras almanız gerektiği görünüyor. Bunu denemeden önce, bir üçgenin şeffaflığını kontrol etmenin mümkün olup olmayacağını sormak isterim. Örneğin. şeffaf bir renk ayarlayabilir miyim (Diffuse) veya şeffaf bir doku kullanabilir miyim (TextCoor1)? Ya da Firemonkey'de parçacıkları çizmek için daha iyi bir yol var mı.Farklı saydamlıkla binlerce Sprite nasıl çizilir?

+2

"Şeffaf bir renk ayarlayabilir miyim ... veya şeffaf bir doku kullanabilir miyim?" ... Neden sadece denemiyorsunuz? O zaman geri dön ve bize anlat. – Ben

cevap

0

Söz konusu çerçeveyle ilgili fazla bir şey bilmediğimi itiraf ediyorum, ancak bir 3B modeldeki saydam noktalar aracılığıyla saydamlığı değiştiremezsiniz. Noktalar genellikle x, y, z koordinatlarıdır. Şimdi, bir aydınlatma sistemi kullanıyorsanız, köşe noktalarının sprite nasıl ışıklandırıldığına etkisi olacaktır. Ayrıca, farklı saydamlık efektlerini uygulamak için köşe bilgilerini de kullanabilirsiniz.

Şimdi, bunu yapmak için muhtemelen bir düzine farklı yol vardır. Genellikle, çalışma zamanında ayarlanabilen farklı alfa değerleri olan bir dokuya sahipsiniz. Grafik API'leri genellikle, değerleri hızlı bir şekilde sprite/dokulara uygulayabilen bazı filtreleme işlevlerine sahiptir ve iyi bir grafik varsa, grafik kartınızı kullanır. Bir etkiyi kullanabiliyorsanız, genellikle nükleer yolun bir dizi farklı kopya oluşturması ve daha sonra bunlara efekt uygulayabilmesi genellikle daha iyidir. Gouraud Gölgeleme kullanıyorsanız, Gouraud doku bilgilerini doldurmak için kod kullandığı için daha kolay olur.

Şimdi, hafif parçacıklar kullanıyor musunuz? Bazı grafik API'ları aslında ışık parçacıklarını oluşturan kodlara sahiptir.

Düzenleme: Vertex Shaders'ı hatırlayabiliyordum.