আমার ই / সি বাস্তবায়ন হল বেসিক যেখানে সত্ত্বা কেবল আইডির হয়, উপাদানগুলি ডেটা এবং সিস্টেমগুলি ডেটাতে কাজ করে the এই মুহুর্তে আমি অবজেক্ট সামগ্রীগুলি এবং সাধারণভাবে রেন্ডারিংয়ে সমস্যায় পড়ছি। সহজ objetcs আমি আসতে পারি ModelComponent
, একটি বাঁধা RenderSystem
, ModelComponent
প্রান্তবিন্দু বাফার id গুলি যা রেন্ডার সিস্টেম ব্যবহার করা হয়। একটি সরল MaterialComponent
রঙের সম্ভবত রঙ বা স্পিকুলার স্ট্রিংহিট ইত্যাদি থাকতে পারে তবে আমি চেয়েছিলাম যে এটি একাধিক রেন্ডার পাস এবং সাধারণ "এফেক্টস" এর পক্ষে সহজতর করার জন্য যথেষ্ট নমনীয় হোক যা সাধারণ ভেরিয়েবলের মতো সহজ নয় MaterialComponent
।
এই সমস্যাগুলি সমাধান করার চেষ্টা করে আমি দুটি সমাধান নিয়ে এসেছি:
1 - সুপার জেনেরিক উপাদান উপাদান
এটার মতো কিছু:
struct Material : public Component
{
ShaderData* shader;
std::vector<std::pair<std::string, boost::any>> uniforms;
[...]
};
এবং রেন্ডার সিস্টেমে আমি লুপ করে ইউনিফর্মটি শেডারে দিয়ে দিতাম। আমি মনে করি এটি ধীর হবে তবে আমার উদ্দেশ্যে এটি যথেষ্ট দ্রুত।
2 - বিমূর্তকরণের আরেকটি স্তর, মেটেরিয়াল ডেটা
নির্দিষ্ট উপকরণ মোড়ানোর জন্য একটি শ্রেণি থাকা, যা বিশেষায়িত উপাদানের দ্বারা উত্তরাধিকার সূত্রে প্রাপ্ত হতে পারে, বেস শ্রেণীর মতো কিছু থাকবে void set_shader_constants(ShaderData* d)
তবে বাস্তবায়ন প্রতিটি শ্রেণীর উপর নির্ভরশীল, এবং MaterialComponent
ম্যাটেরিয়ালডাটা অবজেক্টের পয়েন্টার থাকবে।
আমি কোন পদ্ধতির পছন্দ করব তা নিশ্চিত নই, তবে এর মধ্যে কোনওটিই একাধিক পাসের বিষয় বা অন্যান্য জটিল রেন্ডারিং কৌশলগুলিকে স্পর্শ করে না।
এটি কীভাবে সম্পাদন করা যায় তার কোনও ধারণা?