我目前正在實施一個用c 2D粒子系統++和SFMLSFML粒子系統架構
我發現這個漂亮post激勵我在構建一個通用的系統。現在來了渲染代碼,我要求提供一些關於我有不同選擇的建議。
在SFML教程中,particle system顯示爲SFML實體的一個示例。在這種情況下,粒子系統嵌入頂點數組和其他渲染需求。這也意味着繼承和本教程的設計模式是爲了避免繼承。我需要繼承來構建一個SFML實體,但它應該放在哪裏?
那麼實現渲染解決方案的最佳選擇是什麼?
保持直奔SFML例子,只是增加一個
RenderPolicy
到的政策和紋理信息列表中顆粒:template < class Particle , class RenderPolicy, class OtherPolicies > ParticleSystem : public sf::Drawable, sf::Transformable { // implement the virtual function ... void update(){ RenderPolicy(Particles,VertexArray) // here the render policy update render info } // hold the VertexArray for the Particles ... }; // ParticleSystem
創建粒子系統渲染器作爲SFML實體
template< class ParticleSystem , class RenderPolicy > ParticleSystemRenderer : public sf::Drawable, public sf::Transformable { // will use ParticleSystem array to build VertexArray // will hold texture information and other needs }
將RenderPolicy添加(或替換顏色策略)到作爲SFML實體的ParticleSystem
template< class Particle > class RenderPolicy : public sf::Transformable , public sf::Drawable { // hold vertex array, texture and drawing routine ... }
另一個想法,因爲所有這些都不好?
我認爲,最好的解決辦法是第三個,但一些建議或意見,歡迎 感謝所有,望柱理解;)
thx您的建議和經驗分享,我會考慮和審查一下架構。幾種多策略粒子系統的管理複雜性明顯增加,我也必須考慮這一點 – leJon 2014-08-28 23:47:28