【发布时间】:2021-04-10 17:59:26
【问题描述】:
我正在尝试使用随机颜色在 800 x 800 窗口上绘制每个像素,并且我正在使用 sf::Vertex 绘制像素,但是当我运行程序时,它非常慢。有没有更好的方法来绘制更快且使用更少内存的多个点?这是我写的代码:
#include <SFML/Graphics.hpp>
#include <ctime>
#include <random>
int main() {
// Window
sf::RenderWindow window{ sf::VideoMode{ 800u, 800u }, "Views" };
sf::Clock clock;
static std::mt19937 randomEngine{ static_cast<unsigned int>(std::time(nullptr)) };
std::uniform_int_distribution<int> randDist{ 0, 255 };
// Main game loop
while (window.isOpen()) {
// Event loop
sf::Event sfmlEvent;
while (window.pollEvent(sfmlEvent)) {
if (sfmlEvent.type == sf::Event::Closed) {
window.close();
}
}
// Draw
for (float i = 0; i < window.getSize().x; ++i) {
for (float j = 0; j < window.getSize().y; ++j) {
uint8_t r = randDist(randomEngine);
uint8_t g = randDist(randomEngine);
uint8_t b = randDist(randomEngine);
sf::Vertex pixel{ { i, j }, { r, g, b } };
window.draw(&pixel, 1, sf::Points);
}
}
// Display
window.display();
}
}
【问题讨论】:
-
你见过
sf::Image吗? -
谢谢,效果很好。
标签: c++ visual-c++ sfml