該結束了,比我還以爲是顯著簡單。 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