คำถามติดแท็ก c++

C ++ เป็นภาษาเขียนโปรแกรมแบบสแตติกแบบหลายกระบวนทัศน์รวบรวมภาษาโปรแกรมอเนกประสงค์

4
ฉันจะทำให้ข้อความที่ผ่านระหว่างเธรดในเอ็นจินแบบมัลติเธรดยุ่งยากน้อยลงได้อย่างไร?
เอ็นจิ้น C ++ ที่ฉันกำลังทำงานอยู่นั้นแบ่งออกเป็นหลายเธรดขนาดใหญ่ (สำหรับการสร้างเนื้อหาขั้นตอนของฉัน), การเล่นเกม (สำหรับ AI, สคริปต์, การจำลอง), ฟิสิกส์และการแสดงผล เธรดสื่อสารกันผ่านวัตถุข้อความขนาดเล็กซึ่งส่งผ่านจากเธรดไปยังเธรด ก่อนที่จะก้าวด้ายจะประมวลผลข้อความที่เข้ามาทั้งหมด - การปรับปรุงเพื่อการแปลงเพิ่มและลบวัตถุ ฯลฯ บางครั้งหนึ่งเธรด (รุ่น) จะสร้างบางสิ่งบางอย่าง (ศิลปะ) และส่งผ่านไปยังเธรดอื่น (เรนเดอร์) สำหรับเจ้าของถาวร ในช่วงต้นกระบวนการและฉันสังเกตเห็นสิ่งที่สอง: ระบบการส่งข้อความยุ่งยาก การสร้างชนิดข้อความใหม่หมายถึงคลาสย่อยคลาสคลาสพื้นฐานของข้อความการสร้าง enum ใหม่สำหรับประเภทของมันและการเขียนตรรกะสำหรับวิธีที่เธรดควรตีความชนิดข้อความใหม่ มันเป็นความเร็วในการพัฒนาและมีแนวโน้มที่จะเกิดข้อผิดพลาดแบบผิดพลาด (Sidenote- การทำงานกับสิ่งนี้ทำให้ฉันรู้สึกว่าภาษาไดนามิกที่ยอดเยี่ยมสามารถเป็นเช่นนั้นได้!) มีวิธีที่ดีกว่าในการทำเช่นนี้? ฉันควรใช้บางอย่างเช่น boost :: bind เพื่อทำให้เป็นอัตโนมัติหรือไม่ ฉันเป็นห่วงว่าถ้าฉันทำอย่างนั้นฉันจะสูญเสียความสามารถในการพูดจัดเรียงข้อความตามประเภทหรือบางสิ่งบางอย่าง ไม่แน่ใจว่าการจัดการแบบนั้นจะจำเป็นหรือไม่ จุดแรกมีความสำคัญเนื่องจากเธรดเหล่านี้สื่อสารกันมาก การสร้างและส่งข้อความเป็นส่วนสำคัญในการทำให้สิ่งต่าง ๆ เกิดขึ้น ฉันต้องการที่จะปรับปรุงระบบดังกล่าว แต่ยังเปิดให้กระบวนทัศน์อื่น ๆ ที่อาจเป็นประโยชน์เช่นกัน มีการออกแบบหลายเธรดที่แตกต่างกันที่ฉันควรคิดเพื่อช่วยให้ง่ายขึ้นหรือไม่ ตัวอย่างเช่นมีทรัพยากรบางอย่างที่เขียนไม่บ่อยนัก แต่มักอ่านจากหลายเธรด …

4
มีอะไรที่เหมือนกับ XNA สำหรับ c ++ หรือไม่ [ปิด]
ตามที่เป็นอยู่ในปัจจุบันคำถามนี้ไม่เหมาะสำหรับรูปแบบคำถาม & คำตอบของเรา เราคาดหวังคำตอบที่จะได้รับการสนับสนุนจากข้อเท็จจริงการอ้างอิงหรือความเชี่ยวชาญ แต่คำถามนี้อาจเรียกร้องให้มีการถกเถียงอภิปรายโต้แย้งหรือการอภิปรายเพิ่มเติม หากคุณรู้สึกว่าคำถามนี้สามารถปรับปรุงและเปิดใหม่ได้โปรดไปที่ศูนย์ช่วยเหลือเพื่อขอคำแนะนำ ปิดให้บริการใน6 ปีที่ผ่านมา ฉันชอบคุณสมบัติของ XNA แต่ฉันต้องการเข้าไปในเกม c ++ ปัญหาคือตอนนี้ฉันต้องกังวลเกี่ยวกับทุกอย่างตั้งแต่การโหลดไฟล์ png ไปจนถึงการเปิดหน้าต่าง มันน่ารำคาญนิดหน่อย ฉันต้องการ XNA รุ่น c ++ เพื่อแก้ปัญหาเหล่านี้ให้ฉัน
18 xna  c++ 

6
สุดยอด C ++ Math Library สำหรับ Game Engine? [ปิด]
ตามที่เป็นอยู่ในปัจจุบันคำถามนี้ไม่เหมาะสำหรับรูปแบบคำถาม & คำตอบของเรา เราคาดหวังคำตอบที่จะได้รับการสนับสนุนจากข้อเท็จจริงการอ้างอิงหรือความเชี่ยวชาญ แต่คำถามนี้อาจเรียกร้องให้มีการถกเถียงอภิปรายโต้แย้งหรือการอภิปรายเพิ่มเติม หากคุณรู้สึกว่าคำถามนี้สามารถปรับปรุงและเปิดใหม่ได้โปรดไปที่ศูนย์ช่วยเหลือเพื่อขอคำแนะนำ ปิดให้บริการใน6 ปีที่ผ่านมา ฉันกำลังมองหา C-math คณิตศาสตร์ห้องสมุด opensource ที่รวดเร็วสำหรับเครื่องมือเกมของฉันด้วยคุณสมบัติดังต่อไปนี้: เร็ว (sse?) เวกเตอร์ การฝึกอบรม quaternions เหมาะสำหรับทั้ง OpenGL และ Directx
18 c++  mathematics 

5
Objective-C หรือ C ++ สำหรับเกม iOS?
ฉันค่อนข้างมั่นใจในการเขียนโปรแกรมใน Objective-C และ C ++ แต่ฉันคิดว่า Objective-C นั้นใช้งานได้ง่ายกว่าและมีความยืดหยุ่นและไดนามิกมากกว่าในธรรมชาติ ข้อดีและข้อเสียเมื่อใช้ C ++ แทน Obj-C สำหรับการเขียนเกมใน iOS จะเป็นอย่างไร หรือค่อนข้างมีปัญหาใด ๆ ที่ทราบเกี่ยวกับการใช้ Obj-C เมื่อเทียบกับ C ++? ตัวอย่างเช่นฉันสงสัยว่าอาจมีปัญหาด้านประสิทธิภาพการทำงานกับ Obj-C เทียบกับรหัสที่เขียนใน C / C ++

8
โซลูชั่นที่ดีสำหรับการทำให้เป็นอนุกรมใน C ++ คืออะไร [ปิด]
ปิด. คำถามนี้เป็นคำถามปิดหัวข้อ ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้เป็นหัวข้อสำหรับ Game Exchange Stack Exchange ปิดให้บริการใน5 ปีที่ผ่านมา ฉันอยากรู้ว่าผู้พัฒนาเกมมีวิธีแก้ปัญหาอย่างไรสำหรับการเรียงลำดับข้อมูลประเภทต่างๆที่พวกเขาจัดการกับเกมของพวกเขา พวกคุณใช้ลำดับชั้นของ GameObject แบบเสาหินที่มีอินเตอร์เฟซการทำให้เป็นอนุกรมสำหรับประเภทที่ได้รับมาใช้การเรียงลำดับของโซลูชันที่ใช้ RTTI ที่กำหนดเองทำการสตรีมเป็นอันดับอย่างชัดเจนสำหรับบางคลาสหรือใช้โซลูชันโอเพนซอร์สบางส่วน ฯลฯ )

4
การพลาดแคชและการใช้งานใน Entity Systems
เมื่อเร็ว ๆ นี้ฉันได้ทำการค้นคว้าและนำระบบ Entity มาใช้สำหรับกรอบงานของฉัน ฉันคิดว่าฉันอ่านบทความเกือบทั้งหมด reddits และคำถามเกี่ยวกับมันที่ฉันสามารถหาได้และจนถึงตอนนี้ฉันคิดว่าฉันเข้าใจความคิดที่ดีพอ อย่างไรก็ตามมันทำให้เกิดคำถามบางอย่างเกี่ยวกับพฤติกรรม C ++ โดยรวมภาษาที่ฉันใช้ระบบเอนทิตีในรวมถึงปัญหาการใช้งานบางอย่าง ดังนั้นวิธีการหนึ่งก็คือการจัดเก็บอาร์เรย์ของส่วนประกอบในเอนทิตีโดยตรงซึ่งฉันไม่ได้ทำเพราะมันทำลายสถานที่เก็บแคชเมื่อวนซ้ำผ่านข้อมูล ด้วยเหตุนี้ฉันจึงตัดสินใจที่จะมีหนึ่งอาเรย์ต่อประเภทส่วนประกอบดังนั้นส่วนประกอบทั้งหมดของประเภทเดียวกันจึงต่อเนื่องกันในหน่วยความจำซึ่งควรเป็นทางออกที่ดีที่สุดสำหรับการวนซ้ำอย่างรวดเร็ว แต่เมื่อฉันต้องทำซ้ำอาร์เรย์ของส่วนประกอบเพื่อทำบางสิ่งบางอย่างกับพวกเขาจากระบบในการติดตั้งเกมจริงฉันสังเกตว่าฉันมักจะทำงานกับส่วนประกอบสองชนิดหรือมากกว่าในคราวเดียว ตัวอย่างเช่นระบบการเรนเดอร์ใช้องค์ประกอบการแปลงและโมเดลร่วมกันเพื่อทำการเรียกการเรนเดอร์ คำถามของฉันคือเนื่องจากฉันไม่ได้วนซ้ำแถวลำดับที่ต่อเนื่องกันในแต่ละครั้งในกรณีเหล่านี้ฉันจะเสียสละประสิทธิภาพที่เพิ่มขึ้นทันทีจากการจัดสรรส่วนประกอบด้วยวิธีนี้หรือไม่? เป็นปัญหาหรือไม่เมื่อฉันทำซ้ำใน C ++ อาร์เรย์ที่ต่อเนื่องกันสองชุดและใช้ข้อมูลจากทั้งสองในแต่ละรอบ อีกสิ่งหนึ่งที่ฉันต้องการถามคือควรเก็บการอ้างอิงถึงส่วนประกอบหรือเอนทิตีอย่างไรเนื่องจากลักษณะของการจัดวางองค์ประกอบในหน่วยความจำพวกเขาสามารถสลับตำแหน่งในอาเรย์ได้อย่างง่ายดาย ลดขนาดปล่อยให้ตัวชี้ส่วนประกอบของฉันหรือจัดการไม่ถูกต้อง คุณจะแนะนำให้จัดการกับกรณีเหล่านี้อย่างไรเนื่องจากฉันมักจะพบว่าตัวเองต้องการทำงานกับการแปลงและส่วนประกอบอื่น ๆ ทุกเฟรมและถ้ามือจับหรือตัวชี้ของฉันไม่ถูกต้องมันค่อนข้างยุ่งที่จะทำการค้นหาทุกเฟรม

5
วัตถุเกมควรรับรู้ซึ่งกันและกันอย่างไร?
ฉันพบว่ามันยากที่จะหาวิธีจัดระเบียบวัตถุในเกมเพื่อให้เป็น polymorphic แต่ในเวลาเดียวกันไม่ใช่ polymorphic นี่คือตัวอย่าง: สมมติว่าเราต้องการวัตถุทั้งหมดของเราและupdate() draw()ในการทำเช่นนั้นเราจำเป็นต้องกำหนดคลาสพื้นฐานGameObjectซึ่งมีสองวิธีเสมือนบริสุทธิ์และให้ polymorphism kicks ใน: class World { private: std::vector<GameObject*> objects; public: // ... update() { for (auto& o : objects) o->update(); for (auto& o : objects) o->draw(window); } }; เมธอดการอัพเดตควรดูแลสิ่งที่ระบุว่าอ็อบเจ็กต์คลาสเฉพาะต้องอัพเดต ความจริงก็คือแต่ละวัตถุจำเป็นต้องรู้เกี่ยวกับโลกรอบตัวพวกเขา ตัวอย่างเช่น: เหมืองจำเป็นต้องรู้ว่ามีใครปะทะกับมันหรือไม่ ทหารควรรู้ว่าทหารของทีมอื่นอยู่ใกล้หรือไม่ ซอมบี้ควรรู้ว่าสมองที่อยู่ใกล้ที่สุดภายในรัศมีนั้นอยู่ที่ไหน สำหรับการติดต่อเรื่อย ๆ (เช่นคนแรก) on_collide(GameObject*)ผมคิดว่าตรวจสอบการชนอาจมอบหมายว่าจะทำอย่างไรในกรณีที่เฉพาะเจาะจงของการชนกับวัตถุที่ตัวเองมี ข้อมูลอื่น ๆ ส่วนใหญ่ (เช่นอีกสองตัวอย่าง) อาจถูกสอบถามโดยโลกของเกมที่ส่งผ่านไปยังupdateวิธีการ …
18 c++  architecture 

2
ฉันจะเข้าถึงส่วนประกอบใน C ++ Entity-Component-Systems ของฉันได้อย่างไร
(สิ่งที่ฉันอธิบายจะขึ้นอยู่กับการออกแบบนี้: กรอบงานระบบเอนทิตี้คืออะไรเลื่อนลงมาแล้วคุณจะพบมัน) ฉันมีปัญหาในการสร้างระบบเอนทิตีส่วนประกอบใน C ++ ฉันมีชั้นองค์ประกอบของฉัน: class Component { /* ... */ }; ซึ่งจริงๆแล้วเป็นอินเทอร์เฟซสำหรับส่วนประกอบอื่น ๆ ที่จะสร้าง ดังนั้นเพื่อสร้างองค์ประกอบที่กำหนดเองฉันเพิ่งใช้อินเทอร์เฟซและเพิ่มข้อมูลที่จะใช้ในเกม: class SampleComponent : public Component { int foo, float bar ... }; ส่วนประกอบเหล่านี้จะถูกเก็บไว้ในคลาส Entity ซึ่งให้ ID ที่เป็นเอกลักษณ์แต่ละ Entity: class Entity { int ID; std::unordered_map<string, Component*> components; string getName(); /* ... */ }; มีการเพิ่มส่วนประกอบลงในเอนทิตีโดยการใส่ชื่อส่วนประกอบ …

1
ใน Unreal ความแตกต่างระหว่าง C ++ กับ float คือ FFloat32 คืออะไร?
ฉันพยายามที่จะเรียนรู้บางแง่มุมที่ลึกซึ้งยิ่งขึ้นของ UE4 และในขณะที่อ่านรหัสตัวอย่างจำนวนมากและยังเป็นแหล่งที่มาของเครื่องยนต์ฉันสังเกตว่าบางครั้งผู้คน (และซอร์สโค้ดมาก) ใช้มาตรฐานfloatดั้งเดิมC ++ แต่บางครั้งก็ใช้FFloat32. ถ้าอย่างนั้นฉันอยากรู้ว่า: เมื่อเขียนโปรแกรมเกมด้วย Unreal อะไรคือความแตกต่างระหว่างการใช้ 2 ตัวเลือกเหล่านี้และสิ่งที่เป็นกรณีหลักที่ควรวางมาตรฐานดั้งเดิม C ++ แบบดั้งเดิมเพื่อการใช้งานของเครื่องยนต์

3
คุณจะวาดเส้นตรงระหว่างสองจุดในบิตแมปได้อย่างไร?
ฉันเล่นกับแผนที่ความสูง (บิตแมป) พยายามสร้างของตัวเองในเกมของฉันและเพื่อที่ฉันจะต้องใช้วิธีการวาดขั้นพื้นฐานบางอย่าง ฉันรู้ได้อย่างรวดเร็วว่าการวาดเส้นตรงนั้นไม่ง่ายอย่างที่คิด มันง่ายมากถ้าคะแนนของคุณแชร์พิกัด X หรือ Y หรือถ้าพวกมันอยู่ในแนวเดียวกันคุณก็สามารถวาดเส้นทแยงมุมได้ แต่ในกรณีอื่น ๆ ทั้งหมดมันมีเล่ห์เหลี่ยม คุณใช้อัลกอริทึมแบบใดในการพิจารณาว่าพิกเซลใดที่จำเป็นต้องมีสีเพื่อให้เป็นเส้น "ตรง"

1
เกณฑ์ปกติเทียบกับแผนที่ปกติ
ฉันใช้ผู้นำเข้าสินทรัพย์ Assimp ( http://assimp.sourceforge.net/lib_html/index.html ) เพื่อแยกวิเคราะห์โมเดล 3 มิติ จนถึงตอนนี้ฉันก็แค่ดึงเวกเตอร์ปกติที่กำหนดไว้สำหรับแต่ละจุดยอดในตาข่ายของฉัน แต่ฉันก็ได้พบบทเรียนมากมายในแผนที่ปกติ ... เมื่อฉันเข้าใจมันสำหรับแผนที่ปกติเวกเตอร์ปกติจะถูกเก็บไว้ในแต่ละเท็กเซลของแผนที่ปกติและคุณดึงสิ่งเหล่านี้ออกจากพื้นผิวปกติใน shader เหตุใดจึงมีสองวิธีในการรับบรรทัดฐานซึ่งเป็นวิธีปฏิบัติที่ดีที่สุดและทำไม

7
C ++ จำเป็นต้องเรียนรู้หรือไม่หากฉันต้องการรับงานในอุตสาหกรรมเกม?
C ++ จำเป็นต้องเรียนรู้หรือไม่หากฉันต้องการรับงานในอุตสาหกรรมเกม? ฉันคุ้นเคยกับ C # มากและมีความเชี่ยวชาญขั้นพื้นฐานในการสร้างเกม 2D ใน XNA 4.0 ตอนนี้ฉันอายุเพียง 13 ปีและชอบทำเกมและหวังว่าสักวันฉันจะได้งานเขียนโปรแกรมเกม ฉันเคยได้ยินผู้คนมากมายพูดว่า C ++ เป็น 'มาตรฐานอุตสาหกรรม' และมันจะทำร้ายอาชีพของคุณโดยไม่รู้ตัว ฉันกำลังพยายามกำหนดเป้าหมายแพลตฟอร์มมากกว่าหน้าต่างและฉันรู้เรื่องMonogameแต่ด้วยเหตุผลบางอย่างฉันมีปัญหามากมายกับเทมเพลต visual studio และฉันพบข้อผิดพลาดมากมายกับ monogame เนื่องจากในทางเทคนิคฉันยังไม่สามารถหางานได้และอาจไม่สามารถเขียนโปรแกรมได้จนกระทั่งฉันอายุ 22 ปีหรือมากกว่านั้น และในช่วงระยะเวลา 9 ปีขึ้นไปอุตสาหกรรมเกมมีแนวโน้มที่จะเปลี่ยนไปมาก ดังนั้นนี่คือบางคำถาม การไม่เรียนรู้ C ++ จะทำให้โอกาสในการเขียนโปรแกรมของฉันแย่ลงหรือไม่? เมื่อถึงเวลาที่ฉันจะได้งาน C ++ จะยังคงเป็นภาษาการเขียนโปรแกรม 'มาตรฐานอุตสาหกรรม' ถ้าฉันเป็นนักพัฒนาอินดี้มันสำคัญไหมว่าฉันเรียนรู้ C ++ หรือไม่และยึดติดกับสิ่งที่ฉันรู้ ฉันควรเริ่มเรียนรู้ตอนนี้เพราะฉันมีเวลาหลายปีก่อนที่ฉันจะหางานได้หรือไม่? ฉันยังมีความกังวลด้วยถึงแม้ว่าฉันจะคุ้นเคยกับการเขียนโปรแกรมเชิงวัตถุ แต่ฉันอาจใช้เวลากับ C ++ …
17 xna  c++  game-industry  jobs 

1
การชน 2d ที่รวดเร็วและแม่นยำ
ฉันกำลังทำงานกับปืน topdown 2d และตอนนี้ต้องไปไกลกว่าระบบพื้นฐานการชนกล่องสี่เหลี่ยมของฉัน ฉันมีด่านขนาดใหญ่ที่มีสไปรต์หลากหลายรูปแบบซึ่งมีรูปร่างและขนาดแตกต่างกัน พื้นผิวของสไปรต์เป็นไฟล์ png สแควร์ทั้งหมดที่มีพื้นหลังโปร่งใสดังนั้นฉันจึงต้องมีวิธีการชนเท่านั้นเมื่อผู้เล่นเดินเข้าไปในส่วนที่มีสีของพื้นผิวไม่ใช่พื้นหลังแบบโปร่งใส ฉันวางแผนที่จะรับมือกับการชนดังต่อไปนี้: ตรวจสอบว่าสไปรต์ใด ๆ อยู่ในระยะของเครื่องเล่นหรือไม่ ทำการทดสอบการชนกันของกล่องสี่เหลี่ยม ทำการชนที่ถูกต้อง (ที่ฉันต้องการความช่วยเหลือ) ฉันไม่สนใจเทคนิคขั้นสูงเนื่องจากฉันต้องการทำให้ถูกต้องตามความต้องการทั้งหมดของฉัน แต่ฉันไม่แน่ใจว่าจะเข้าถึงสิ่งนี้ได้อย่างไร เทคนิคอะไรหรือแม้กระทั่งห้องสมุดที่ต้องลอง ฉันรู้ว่าฉันอาจต้องสร้างและจัดเก็บรูปร่างบางอย่างที่แสดงถึงเทพดาแต่ละฉากได้อย่างแม่นยำลบพื้นหลังโปร่งใส ฉันอ่านแล้วว่าต่อพิกเซลช้าดังนั้นเมื่อกำหนดระดับใหญ่และจำนวนวัตถุฉันไม่คิดว่ามันจะเหมาะสม ฉันเคยดู Box2d แล้ว แต่ยังไม่สามารถหาเอกสารจำนวนมากหรือตัวอย่างของวิธีการใช้และจัดการกับ SFML

6
ฉันจะเริ่มต้นได้ที่ไหนถ้าฉันต้องการเขียนเกม C ++ 2d [ปิด]
ตามที่เป็นอยู่ในปัจจุบันคำถามนี้ไม่เหมาะสำหรับรูปแบบคำถาม & คำตอบของเรา เราคาดหวังคำตอบที่จะได้รับการสนับสนุนจากข้อเท็จจริงการอ้างอิงหรือความเชี่ยวชาญ แต่คำถามนี้อาจเรียกร้องให้มีการถกเถียงอภิปรายโต้แย้งหรือการอภิปรายเพิ่มเติม หากคุณรู้สึกว่าคำถามนี้สามารถปรับปรุงและเปิดใหม่ได้โปรดไปที่ศูนย์ช่วยเหลือเพื่อขอคำแนะนำ ปิดให้บริการใน7 ปีที่ผ่านมา ฉันเป็นนักพัฒนาเว็บ C # และฉันต้องการที่จะขยายชุดทักษะของฉันและมีความสนุกสนานในขณะที่ทำมัน ฉันรู้พื้นฐานบางอย่างของ C ++ และฉันชอบที่จะเขียนเอ็นจิ้นเกม 2d / เกมแบบง่าย ๆ สำหรับตัวเองโดยใช้ C ++ ฉันต้องใช้ไลบรารีหรือ SDK อื่นใดและฉันจะหาบทช่วยสอนและแหล่งข้อมูลที่ให้ข้อมูลไปข้างหน้าได้จากที่ใด ฉันดู XNA ด้วย C # แล้ว มีทรัพยากรมากมายสำหรับสิ่งนั้น แต่ฉันอยากจะใช้ผลิตภัณฑ์ที่ไม่ใช่ของ Microsoft ประเด็นนี้คือการมีความสนุกสนานเล็กน้อยในขณะที่กลายเป็นโปรแกรมเมอร์โค้งมนที่ดีขึ้น โปรดทราบว่าฉันไม่ได้ขอให้สถานที่ที่ดีที่สุดในการเริ่มต้น ฉันแค่ขอสถานที่ที่จะเริ่มต้น ขอบคุณสำหรับความช่วยเหลือใด ๆ !
17 c++ 

1
การออกแบบคลาส ResourceManager
ฉันตัดสินใจว่าฉันต้องการเขียนคลาส ResourceManager / ResourceCache สำหรับเอนจิ้นเกมอดิเรกของฉัน แต่ฉันมีปัญหาในการออกแบบรูปแบบแคช แนวคิดก็คือ ResourceManager มีเป้าหมายนุ่มนวลสำหรับหน่วยความจำทั้งหมดที่ใช้โดยทรัพยากรทั้งหมดของเกมรวมกัน คลาสอื่น ๆ จะสร้างออบเจ็กต์ทรัพยากรซึ่งจะอยู่ในสถานะไม่โหลดและส่งไปยัง ResourceManager จากนั้น ResourceManager จะตัดสินใจเมื่อใดที่จะโหลด / ยกเลิกการโหลดทรัพยากรที่กำหนดโดยคำนึงถึงขีด จำกัด ซอฟต์ เมื่อต้องการทรัพยากรโดยชั้นเรียนอื่นคำขอจะถูกส่งไปยัง ResourceManager สำหรับมัน (โดยใช้ id ของสตริงหรือตัวระบุที่ไม่ซ้ำกัน) หากโหลดทรัพยากรแล้วการอ้างอิงแบบอ่านอย่างเดียวไปยังทรัพยากรจะถูกส่งผ่านไปยังฟังก์ชั่นการโทร หากไม่ได้โหลดทรัพยากรผู้จัดการจะทำเครื่องหมายวัตถุที่จะโหลดในโอกาสถัดไป (โดยปกติจะอยู่ที่ส่วนท้ายของการวาดเฟรม) โปรดทราบว่าแม้ว่าระบบของฉันจะทำการนับการอ้างอิงบางอย่างจะนับเฉพาะเมื่อมีการอ่านทรัพยากร (ดังนั้นจำนวนการอ้างอิงอาจเป็น 0 แต่เอนทิตีอาจยังคงติดตาม uid อยู่) นอกจากนี้ยังเป็นไปได้ที่จะทำเครื่องหมายทรัพยากรเพื่อการโหลดที่ดีก่อนการใช้งานครั้งแรก นี่เป็นภาพร่างของชั้นเรียนที่ฉันใช้อยู่: typedef unsigned int ResourceId; // Resource is an abstract data type. class Resource …

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.