我正在尝试在sf::vertexarray
上绘制纹理
如果我调用下面的代码(没有纹理),我可以显示一个带红色边框的矩形。当我添加纹理时,我什么也看不见。
我做错了什么?
sf::VertexArray v_array;
v_array.append(sf::Vertex(sf::Vector2f(1,1) , sf::Color::Red));
v_array.append(sf::Vertex(sf::Vector2f(60,1) , sf::Color::Red));
v_array.append(sf::Vertex(sf::Vector2f(60,10 ), sf::Color::Red));
v_array.append(sf::Vertex(sf::Vector2f(1,10), sf::Color::Red));
v_array.append(sf::Vertex(sf::Vector2f(1,1), sf::Color::Red ));
v_array.setPrimitiveType(sf::LinesStrip);
sf::Texture text;
text.loadFromFile("../ressources/tileset_base.png");
sf::RenderStates rend(&text);
sf::RenderWindow App(sf::VideoMode(800, 600, 32), "SFML Graphics");
// Start game loop
while (App.isOpen())
{
// Process events
sf::Event Event;
while (App.pollEvent(Event))
{
// Close window : exit
if (Event.type == sf::Event::Closed)
App.close();
}
App.clear();
App.draw(v_array/*, rend*/);
App.display();
}
答案 0 :(得分:3)
您需要为顶点提供一些纹理坐标。您可以使用以下两个构造函数之一:
Vertex (const Vector2f &thePosition, const Vector2f &theTexCoords)
Vertex (const Vector2f &thePosition, const Color &theColor, const Vector2f &theTexCoords)
请参阅文档here
小提示:如果您只使用一个渲染状态(例如仅使用纹理),则可以使用此快捷方式:
App.draw(v_array, &text);