c++ - 如何在 SFML 中使用顶点数组?

标签 c++ sfml

我正在尝试在 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();
}

最佳答案

你需要给你的顶点一些纹理坐标。您可以使用以下两个构造函数之一:

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

参见文档 here

小提示:如果您只使用一种渲染状态(例如,只使用纹理),您可以使用此快捷方式:

App.draw(v_array, &text);

关于c++ - 如何在 SFML 中使用顶点数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12116646/

相关文章:

c++ - 在 2D vector 中移动行

c++在子类的父类中设置指针变量并在父类中使用它

用于读取结构的基于 C++ 范围的循环

c++ - 如何使用此代码设置重力?

c++ - 从 txt 文件读取时,我的程序不会移动到下一行

c++ - 以下 union 中的值是如何分配的?

c++ - 在 Visual Studio 中循环

c++ - 为什么我的按钮类项目共享相同的 lambda 函数?

c++ - 当我尝试绘制 sf::Text 对象时 SFML 中的段错误

C++ Vector 遍历抽象类