gpt4 book ai didi

c++ - 来自 VertexArray 的 SFML 绘图基元

转载 作者:行者123 更新时间:2023-11-28 04:41:22 25 4
gpt4 key购买 nike

如何从构造的 VertexArray 中绘制我选择的图元?在下面的示例中,我向“顶点”数组添加了两个顶点,并尝试使用“window.draw(vertices, 2, sf::Lines)”绘制它,但它给了我一个错误。我知道我可以用 'sf::Vertex foo[] = {..}' 创建线对象,但我希望能够继续将顶点附加到数组而不是一次初始化所有顶点。

#include <SFML/Window.hpp>
#include <SFML/OpenGL.hpp>
#include <SFML/Graphics.hpp>
#include <iostream>

int main()
{
// Create the main window
sf::RenderWindow window(sf::VideoMode(640, 480), "SFML");
sf::Clock clock;

sf::VertexArray vertices;
sf::Vertex vertex;

vertex.position = sf::Vector2f(0, 0);
vertex.color = sf::Color(100, 0, 200);
vertices.append(vertex);
vertex.position = sf::Vector2f(100, 100);
vertex.color = sf::Color(100, 0, 200);
vertices.append(vertex);

// Start the game loop
bool running = true;
while (running)
{
// Process events
sf::Event event;
while (window.pollEvent(event))
{
// Close window: exit
if (event.type == sf::Event::Closed)
running = false;
}

window.clear(sf::Color::Black);
window.draw(vertices,2 ,sf::Lines);

window.display();
}

return 0;
}

最佳答案

你可以在声明sf::VertexArray vertices;之后调用vertices.setPrimitiveType(sf::Lines);,然后绘制它:window.draw(顶点);

或者您可以在构造函数中设置它的原始类型以及点数,然后您可以使用operator[]访问这些点:

sf::VertexArray line(sf::Lines, 2); //or sf::LineStrip
line[0].position = sf::Vector2f(0, 0);
line[0].color = sf::Color(100, 0, 200);
line[1].position = sf::Vector2f(100, 100);
line[1].color = sf::Color(100, 0, 200);
...
window.draw(line);

引用:enum sf::PrimitiveType , sf::VertexArray , VertexArray tutorial

关于c++ - 来自 VertexArray 的 SFML 绘图基元,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50124783/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com