比较精灵?

时间:2012-01-04 05:25:35

标签: c++ sfml

对于我正在研究的游戏,我想比较SFML2中的两个精灵,比如if()语句。例如,我可能有一个大的1280x1024图像,所有黑色像素中都有一个灰色像素。然后我将有2个单独的精灵,一个是单独的灰色像素,另一个是地图。我只会从地图中裁剪出灰色像素并比较两者,如果是,则执行其他操作。

你看到我在这里得到了什么吗?这可能吗?如果是这样,怎么样?

1 个答案:

答案 0 :(得分:2)

我和亚历克斯说,有更聪明的方法来检查精灵。

  1. 不比较文件名,不要引用图像中的单个像素,因为你必须将整个图像加载到内存中来执行该操作,你只需要将1.3 MB内存加载到内存中以检查单个像素吗?
  2. 将所有资源存储在资源管理器中,并通过UID引用它们,如果资源有UID则使用该资源。
  3. 第2号比其他所有人更可取,但还有很多其他方法

    编辑:根据评论,您不会“裁剪”像素,您只需将图像加载到内存中并使用Image类获取某个位置的像素颜色。以下是一个例子

    sf::Image* map = MapSprite->GetTexture()->CopyToImage()
    if (map->GetPixel(666,666) == sf::Color::Black)
    {
        //Funky stuff here
    }
    

    注意:您提到SFML2所以这是来自那组文档,对于1.6

    可能有所不同

    Edit2:自从我使用了SMFL以来已经有一段时间了,所以希望代码片段至少会给你指路