我一直在观看TheCherno在YouTube上的一个系列节目,他在节目中展示了自己在C ++中开发的游戏引擎。我一直在跟踪并复制代码,同时他解释了它的作用。无论如何,他到了一个点,他想在屏幕上渲染一堆矩形,它看起来像这样(我删除了照明顺便说一句):
在视频中,他编写了类似下面的代码来生成正方形:
std::vector<Renderable2D*> sprites;
for (float x = 0.0f; x < 16.0f; x += 0.1f) {
for (float y = 0.0f; y < 9.0f; y += 0.1f) {
sprites.push_back(new Sprite(position, size, color));
}
}
所以每个方块都在堆上分配(我想他忘了删除所有内容!)。这是我尝试过的,它也是如此:
std::vector<Renderable2D> sprites;
for (float x = 0.0f; x < 16.0f; x += 0.1f) {
for (float y = 0.0f; y < 9.0f; y += 0.1f) {
sprites.push_back(Sprite(position, size, color));
}
}
那他为什么要在堆上分配每个方块呢?这对性能有好处吗?如果是这样,我没有发现任何性能差异。两种方式都非常顺利。