【问题标题】:Graphics in c++ coded inefficientlyc++ 中的图形编码效率低下
【发布时间】:2013-03-20 12:23:23
【问题描述】:

我在 c++ 中使用 Devkit pro 为 nds 编码,顶部显示了一个图形。每个图形都加载了一个值(这是从中加载图像的哪个部分),我想要大约 20 个相同类型的图形,但同时加载和显示不同的值。有没有办法创建某种图形数组而不是定义“图形INV1;图形INV2;”并加载它们?每个图形都被定义、加载并显示如下:

graphic inv1;
graphic inv2;

if (loadedgraphic) unloadGraphic(&inv);  //basically reloads graphics
loadGraphicSub(&inv1,2,5);               //arguments: (Graphic, type, value)
loadedgraphicinv = true;

if (loadedgraphic) unloadGraphic(&inv);  //basically reloads graphics
loadGraphicSub(&inv1,2,6);               //arguments: (Graphic, type, value)
loadedgraphicinv = true;


showGraphic(&inv1,10,10); // This shows the inv1 graphics at the coordinate (10,10).
showGraphic(&inv2,10,15); // This shows the inv2 graphics at the coordinate (10,10).

这可能会重复 20 次以上,每次都有一个新图形......

【问题讨论】:

  • 创建一个数据结构来保存它们,例如标准库中的列表或向量。创建一个函数或类来管理图形工厂等资源。
  • 这很有趣,但我仍然需要定义和初始化每一个......最终,我有 2 个 for 循环,我想要显示图形,但每一个都不同。所以理想情况下,类似于:graphic INV[]; //INIT INV for (x=0;x

标签: c++ arrays graphic nintendo-ds devkitpro


【解决方案1】:
std::vector<graphic> vMyGraphics(7);
for(int i=0; i<7; i++)
{
   if (loadedgraphic) unloadGraphic(&inv);  //basically reloads graphics
   loadGraphicSub(&vMyGraphics[i],2,i+1);               //arguments: (Graphic, type, value)
   loadedgraphicinv = true;
}

【讨论】:

  • 此代码包含错误。您可能会遇到段错误...您在创建元素之前访问 vMyGraphics。
  • 实际上,我发现,我只需要添加 [47] 来创建一个 47 的图形数组(我不确定这是否是特定于项目的)。
猜你喜欢
  • 2011-10-13
  • 1970-01-01
  • 2016-12-04
  • 1970-01-01
  • 1970-01-01
  • 2011-03-08
  • 1970-01-01
  • 2015-02-14
  • 2015-10-06
相关资源
最近更新 更多