现在我有几个类支持DirectX引擎 - 应用,图形,声音和他们每个人是1K左右的线条和他们每个参考eachother.I最初试图限制使用类和类似的东西传递D3D设备和而是让所有类都使用它,但是我在其他人的引擎中看到,一切都分成许多类,并且它们具有诸如Engine-> GetRenderer-> Render(MyD3DContext);是不是terriby低效?为什么不只是让MyD3DContext全球,直接在渲染function.And最后一件事我没有得到使用它是=怎么是你应该做的工作独立海誓山盟的课吗?听起来不可思议。我应该转向面向对象的编程(黑盒子)吗?
回答
它不是非常低效的。而且你肯定需要介绍某种OOP。甚至可能是something online
是的。
随着项目变得越来越大,有一个全球性的东西会引起大量的问题。遍历几个指针也不是特别低效。担心在正确的领域提高效率,您通过运行测试证明的领域效率低下,并始终尝试并保持代码的清晰度和分离度。
如果您担心效率低下,为什么不把测试应用程序合并在一起,而测试应用程序恰好具有这种类型的结构和时间,需要多长时间才能完成所有解除引用。你会发现它并不重要,比如建立一个多边形列表。
只有当您的项目发展壮大,您才能看到将非常全面封装的非全局对象的好处。
有几个大的OO设计租户:特别是代码重用/模块化和范围/隔离。现在,全球通常都会皱眉,因为它们不能很好地适应大规模的开发工作,并且总是导致问题,所以OO试图将任何给定调用的范围限制到执行该功能所需的最小范围。对于模块化/再利用,子模块越大,通常它变得越具体,并且因此如果它被分解成更多模块化块,则其越不适合所有目的。因此,您可以花更少的时间重写相同的代码以稍微调整目的,这也可以减少在实现新代码时可能破坏的相邻目的。这使得它的实现效率更高,尽管在运行时可能会或可能不会有一些微小的成本。可能不会。请记住,它不需要舔更多的二进制文件来运行Render(),无论它是在根模块中定义的还是在合成对象中组成深层的几层。它仍然只是一个函数指针。
这些只是一般的概念,所以把你喜欢什么。
希望帮助。
首先,为什么你认为这是非常低效?除了更容易编码和维护之外,这个速度也非常快。 OOP不是一个瓶颈,它对于拥有多个开发人员和多重顾虑的大型项目(如真实世界的游戏)来说是一个福音。
让我给你举个例子,因为你提到的“游戏”:
游戏是一个模拟 模拟包含实体(对象) 对象可以做事情,有属性。因此,对象就像属性和动作的封装。这就是“面向对象编程”中的“对象”的原因。你可以认为它们(对象)是在模拟器中的虚构工厂中创建的。对象的蓝图是“类”,并且被称为encapsulation
。
这些对象中的每一个都绑定到了你的世界,可能是通过某种高度数学的半条命2(源)级物理引擎。你不想编写每个类的“物理”。相反,你会从类(或接口)“IPhysics”继承。然后,无论何时将重力从10.0更改为15.0,该值都会在“世界”情景中传播。这是inheritance
。
如果你知道我的意思,那么你的游戏中的每个对象,比如Half-Life-2,Gordon Freeman可以同时作为“玩家”和“可以被脚本化”。这是多态性。一个对象使用不同的类型。
所以,你看,这是非常容易(和非常有效)模型和展示面向对象的虚构游戏。
- 1. 面向对象编程。子类的域
- 2. 我的MVC控制器应该是面向对象的吗?
- 3. 面向对象编程Nth子
- 4. 在面向对象的编程中,我们需要抽象吗?
- 5. 面向对象编程
- 6. 面向对象编程(OOP)
- 7. Python:面向对象编程
- 8. Python面向对象编程
- 9. 面向对象编程
- 10. 面向对象编程
- 11. Scala面向对象编程
- 12. android面向对象编程
- 13. mysqli面向对象编程
- 14. 面向对象编程(HOW!)
- 15. 面向对象编程
- 16. 我可以使用C进行面向对象的编程吗?
- 17. 我该如何改进面向对象编程?
- 18. 面向对象的建议 - 我应该改变程序的运行方式吗?
- 19. 面向对象编程 - 子对象与全局变量(用例)
- 20. VB.net中面向对象的黑杰克
- 21. 面向对象的编程设计?
- 22. 面向对象的编程逻辑
- 23. 的Javascript面向对象编程能力
- 24. 面向对象的python编程
- 25. 面向对象的编程蟒蛇
- 26. Python面向对象的编程
- 27. Tk面向对象的编程
- 28. python ShoppingCart中的面向对象编程
- 29. 面向对象的编程和路径
- 30. 面向对象的Python编程
如果您的图形与您的应用程序捆绑在一起,那么当您要更改图形时,您会做什么?你不应该因为你的图形已经改变而改变你的应用程序! – corsiKa