円の描画速度
Gala 2017/01/29(Sun) 11:21
「円の描画」と「円の枠の描画」を交互に行うと、処理速度が著しく低下しました。
解決方法が有りましたら教えて頂けると幸いです。
なお、円をまとめて描画後、円の枠を描画したり、
円ではなく長方形描画に変更すると、この現象は発生しませんでした。
下記プログラムにて検証しました。
パターン1(円と円の枠を交互に描画):FPS 6
パターン2(円を描画後、円の枠を描画):FPS 60
※パターン2では円が重なった時の描画結果が異なってしまいます。
よろしくお願いします。
-----
# include <Siv3D.hpp>
void Main()
{
static const int MIN = 0;
static const int WIDTH = 800;
static const int HEIGHT = 600;
// 描画数
static const int NUMBER = 5000;
// 描画設定
static const int SIZE = 5;
static const Color COL(160, 180, 100);
static const Color COL_F(120, 140, 60);
Window::Resize(WIDTH, HEIGHT);
std::vector<Point> pointList(NUMBER);
Point point;
// 座標設定
for (int i = 0; i < NUMBER; i++) {
point.x = Random(MIN, WIDTH);
point.y = Random(MIN, HEIGHT);
pointList[i] = point;
}
while (System::Update())
{
ClearPrint();
// パターン1
for (auto p : pointList) {
const Circle circle(p.x, p.y, 3);
circle.draw(COL);
circle.drawFrame(0, 1, COL_F);
}
/*
// パターン2
for (auto p : pointList) {
Circle circle(p.x, p.y, 3);
circle.draw(COL);
}
for (auto p : pointList) {
Circle circle(p.x, p.y, 3);
circle.drawFrame(0, 1, COL_F);
}
*/
Println(Format(L"FPS: ", Profiler::FPS()));
}
}
Reputeless 2017/01/29(Sun) 20:04