该结束了,比我还以为是显著简单。 SFML有一个vertexArray类,允许绘制自定义四边形而不需要使用openGL。
我结束了持续的代码如下(为别人谁运行到这个问题):
sf::Texture texture;
texture.loadFromFile("texture.png");
sf::Vector2u size = texture.getSize();
sf::VertexArray box(sf::Quads, 4);
box[0].position = sf::Vector2f(0, 0); // top left corner position
box[1].position = sf::Vector2f(0, 100); // bottom left corner position
box[2].position = sf::Vector2f(100, 100); // bottom right corner position
box[3].position = sf::Vector2f(100, 100); // top right corner position
box[0].texCoords = sf::Vector2f(0,0);
box[1].texCoords = sf::Vector2f(0,size.y-1);
box[2].texCoords = sf::Vector2f(size.x-1,size.y-1);
box[3].texCoords = sf::Vector2f(size.x-1,0);
要画它,你叫下面的代码,无论你通常会告诉你的窗口绘制的东西。
window.draw(lines,&texture);
如果您想扭曲图像,您只需更改角落的位置。很棒。有了这些信息,你应该可以创建一个自定义的drawable类。你必须编写一些代码(set_position,rotate,skew等),但你只需要改变角落的位置并绘制。
我对SFML不熟悉。但是,取决于你是在歪斜,这可能非常容易。如果你需要渲染整个场景然后倾斜,你必须学习如何渲染纹理。如果你只需要一些存储材质的纹理,那么它就像调整你的着色器中的纹理矩阵一样简单,根据其他人在这里提出一个问题的偏移转换矩阵:http://stackoverflow.com/questions/673216/ skew-matrix-algorithm为了学习着色器,你应该研究如何在这里写出它们:http://www.lighthouse3d。com/tutorials/glsl-core-tutorial/ – zero298
你不需要着色器来歪斜图像。渲染到纹理,然后定位它应该足够了 –
@BЈовићSFML不能在三维中定位。所以我不确定我会怎么做。 – Legacyblade