0

以下のコードを (テクスチャなしで) 呼び出すと、テクスチャを描画しようとしてい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();
}
4

1 に答える 1

3

頂点にテクスチャ座標を与える必要があります。次の 2 つのコンストラクターのいずれかを使用できます。

Vertex (const Vector2f &thePosition, const Vector2f &theTexCoords)
Vertex (const Vector2f &thePosition, const Color &theColor, const Vector2f &theTexCoords)

こちらのドキュメントを参照してください

ちょっとしたヒント: レンダリング ステートを 1 つだけ (テクスチャのみなど) 使用する場合は、次のショートカットを使用できます。

App.draw(v_array, &text);
于 2012-08-25T11:08:48.873 に答える