gpt4 book ai didi

c - 空指针的动态数组是否是 C 游戏开发的性能问题?

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

<分区>

下学期,我将用 C(特别是 C89)制作游戏。来自 C# 等高级语言,我要做的第一件事就是制作一个实体列表(游戏对象),并且每一帧循环遍历每个实体并运行它们的更新和绘制方法。将这种思想转化为 C,我的想法是开发一个“列表”结构,它包含一个指向空指针数组的指针,并制作函数来添加、获取和删除列表中的条目。如果一个对象被添加到 List 但数组太小,则将数组重新分配为两倍大的数组。有了这个系统,当我生成一个敌人时,我可以将指向其实体结构的指针添加到列表中,然后每一帧循环遍历列表,将每个空指针元素转换为指向实体的指针,然后将其相应地传递给 entity_update(Entity *)entity_draw(Entity *) 方法。

在我看来,只要我 100% 确定只将指向实体结构的指针(转换为 void 指针)放在列表​​数组中,就不会有任何问题......但是当我提到这个时他是一位同学,他说他认为将 void 指针转换为指向其他事物的指针会带来性能缺陷。在 Internet 上环顾四周,据我所知,真正的问题是编译器无法正确优化您的代码,就像编译器事先知道指针指向的类型一样。在我的情况下,这最终会成为一个问题吗?我想以每秒 60 次的速度遍历一个可能很大的 void 指针数组?将指向实体的指针存储在具有较大的预定义最大大小的实体指针数组中,然后进行绑定(bind)检查以确保即如果没有剩余空间则不会生成敌人并不是什么大不了的事数组...但我只是想在开始研究游戏的基本底层引擎之前确定一下。

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