Skip to content

Instantly share code, notes, and snippets.

@MORTAL2000
Last active July 13, 2016 02:48
Show Gist options
  • Save MORTAL2000/f897f49f7a323ff6cac4992ab58e1d35 to your computer and use it in GitHub Desktop.
Save MORTAL2000/f897f49f7a323ff6cac4992ab58e1d35 to your computer and use it in GitHub Desktop.
#include <SFML/Graphics.hpp>
#include <vector>
void pollEvent(sf::RenderWindow& window)
{
sf::Event event;
while (window.pollEvent(event))
{
if (event.type == sf::Event::Closed)
window.close();
}
}
sf::Transform transform(std::vector<sf::Vertex>& vec, float x, float y)
{
for(auto& v : vec) { v.position = v.position * 100.f; }
sf::Transform transform;
transform.translate(x, y);
return transform;
}
int main()
{
sf::RenderWindow window(sf::VideoMode(200, 200), "SFML works!");
// Quads
std::vector<sf::Vertex> quad{
{{0, 0}, {sf::Color::Blue}},
{{1, 0}, {sf::Color::Green}},
{{1, 1}, {sf::Color::Red}},
{{0, 1}, {sf::Color::Yellow}},
};
sf::Transform quad_transform = transform(quad, 0 , 0);
// Triangles
std::vector<sf::Vertex> triangles{
{{0, 0}, {sf::Color::Blue}},
{{1, 0}, {sf::Color::Green}},
{{0, 1}, {sf::Color::Red}},
{{1, 0}, {sf::Color::Blue}},
{{1, 1}, {sf::Color::Green}},
{{0, 1}, {sf::Color::Red}},
};
sf::Transform triangles_transform = transform(triangles, 100, 0);
// Triangles Fan
std::vector<sf::Vertex> triangles_fan{
{{0.5f, 0.5f}, {sf::Color::Black}}, // center for all
{{0, 0}, {sf::Color::Green}},
{{1, 0}, {sf::Color::Red}},
{{1, 0}, {sf::Color::Green}},
{{1, 1}, {sf::Color::Red}},
{{1, 1}, {sf::Color::Green}},
{{0, 1}, {sf::Color::Red}},
{{0, 0}, {sf::Color::Green}},
{{0, 1}, {sf::Color::Red}},
};
sf::Transform triangles_fan_transform = transform(triangles_fan, 0, 100);
//Triangles Strip
std::vector<sf::Vertex> triangles_strip{
{{0, 0}, {sf::Color::Blue}},
{{0, 1}, {sf::Color::Green}}, // shared vertices
{{1, 0}, {sf::Color::Red}},
// {{0, 1}, {sf::Color::Green}},
// {{1, 0}, {sf::Color::Red}},
{{1, 1}, {sf::Color::Blue}},
};
sf::Transform triangles_strip_transform = transform(triangles_strip, 100, 100);
while (window.isOpen())
{
pollEvent(window);
window.clear();
window.draw(quad.data(), quad.size(), sf::Quads, quad_transform);
window.draw(triangles.data(), triangles.size(), sf::Triangles, triangles_transform);
window.draw(triangles_fan.data(), triangles_fan.size(), sf::TrianglesFan,triangles_fan_transform);
window.draw(triangles_strip.data(), triangles_strip.size(), sf::TrianglesStrip, triangles_strip_transform);
window.display();
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment