【问题标题】:How to Render images in shape/ polygon form?如何以形状/多边形形式渲染图像?
【发布时间】:2011-10-01 16:42:53
【问题描述】:

嘿,我现在正在使用 SFML,在完成教程后,我仍然不知道如何为形状赋予纹理或图像,而不仅仅是纯色/轮廓。

我知道唯一可以拍摄图像的是精灵,但这很简单,因为它只允许您以矩形方式渲染矩形图像!

将图像渲染到形状上的技术是什么,并且只在形状内部?如果你们中的一些人可以提供一些资源或特定于 SFML 的东西,那就太好了!

【问题讨论】:

    标签: c++ image rendering shape sfml


    【解决方案1】:

    自从最初回答了这个问题以来,SFML 已经更新,您现在可以轻松地为形状添加纹理。形状类具有setTexture()setTextureRect() 方法。 setTexture() 采用指向 sf::Texture 的指针。请参阅documentation

    Sf::Texture texture;
    if (!texture.loadFromFile("mytexture.png"))
    {
        std::cerr << "failed to load";
    }
    sf::RectangleShape myRect{ sf::Vector2f(width, height) };
    myRect.setTexture(&texture);
    myRect.setTextureRect(sf::IntRect( x, y, width, height ));
    

    【讨论】:

      【解决方案2】:

      2d:

      据我所知,SFML 1.6 无法使用单独的图像作为蒙版。但是,您可以使用图像的 Alpha 通道从中绘制“形状”。这是默认支持的;只需给你的图像一个 alpha 通道。

      This post on the SFML forms 验证不支持使用单独的图像作为蒙版。

      SFML 的作者 Laurent Gomila 发布了一些代码,可让您使用形状、精灵和字符串进行遮罩。可以在这里找到:Masking using Sprites, Shapes or Strings。但是,要使其正常工作,您需要修改和重新编译 SFML 的某些部分。

      3d:

      关于使用图像作为纹理并将其映射到 3d 空间中的对象,我认为 SFML 除了为您设置一个窗口之外,没有太多帮助。不过,有一个project on Google Code called sf3d 可能会让你朝着正确的方向前进。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-03-25
        • 2013-03-02
        • 1970-01-01
        • 1970-01-01
        • 2019-03-18
        • 1970-01-01
        • 2015-04-05
        • 2012-02-05
        相关资源
        最近更新 更多