gpt4 book ai didi

c++ - 使渲染方法虚拟?

转载 作者:太空宇宙 更新时间:2023-11-04 15:10:49 25 4
gpt4 key购买 nike

在构建简单的 2d 游戏引擎时,我开始更深入地使用 C++。在我的引擎中,我有(或想要)一个“抽象”GameEntity 类,它包含方法 drawupdate,也许还有 位置(x,y)。我会在想到的时候添加更多内容。

GameEntity 继承的类可以是任何可以在屏幕上绘制的东西(ParticleSystemMovingSpriteStaticSpriteGuiMenu 等...)

我的问题是,为了实现这一点,我声明了 GameEntity draw()update() 方法是虚拟的:

virtual draw()=0;
virtual update()=0;

所以 ParticleSystem 有它自己的 draw 而 MovingSprite 也有它自己的 draw()(和 update()).

我知道虚函数很昂贵,或者至少比常​​规方法更昂贵。你觉得我的所作所为很糟糕吗?还是太差了?如果您愿意,我将非常感激有更好的方法来做到这一点。

谢谢!

最佳答案

不,这还不错;开销并不那么显着(您可以引用 this answer to another question )。

例如,这是 OpenSceneGraph 采取的一般方法,一个基于 OpenGL 的开源场景图。 OSG 有 a Node class ,场景图中使用的所有节点类型都是从中派生的,并且它使用了大量的虚函数。

关于c++ - 使渲染方法虚拟?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1753745/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com