如何以形状/多边形形式渲染图像

How to Render images in shape/ polygon form?

本文关键字:图像 多边形      更新时间:2023-10-16

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

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

什么是渲染图像到形状,只有在形状内部的技术?如果你们中的一些人能提供一些资源或sfml特定的东西,那就太好了!

SFML已经更新,因为这个问题最初的答案,你现在可以很容易地添加纹理形状。形状类有setTexture()setTextureRect()方法。setTexture()带指向sf::Texture的指针。参考文档

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 ));

2d:

据我所知,在SFML 1.6中,不可能使用单独的图像作为遮罩。但是,您可以使用图像的alpha通道从中绘制"形状"。这是默认支持的;给你的图片一个alpha通道。

这篇关于SFML表单的文章验证了使用单独的图像作为掩码是不支持的。

SFML的作者Laurent Gomila发布了一些代码,允许您使用形状,精灵和字符串进行遮罩。可以在这里找到:使用精灵,形状或字符串遮罩。然而,要使其工作,您需要修改和重新编译SFML的某些部分。

3 d:

关于使用图像作为纹理并将其映射到3d空间中的对象,我认为除了为您设置窗口外,SFML没有太多帮助。在Google Code上有一个名为sf3d的项目,它可能会帮你找到正确的方向。