【发布时间】:2018-06-24 14:15:38
【问题描述】:
我想知道如何优化我的圆形绘制方法。在将顶点发送到 opengl 之前,我寻求如何尽快生成顶点。
void DrawCircle(float x, float y, float radius, Color color, float thickness)
{
int numOfPoints = 100;
for (float i = 0; i < numOfPoints; ++i) {
float pi2 = 6.28318530718;
float angle = i / numOfPoints * pi2;
FillRect(
cos(angle) * radius + x,
sin(angle) * radius + y,
thickness,
thickness,
color);
}
}
FillRect 函数只是简单地绘制一个四边形,因此 DrawCircle 函数绘制了 100 个四边形,这些四边形分别按 cos、sin 和半径移动。
FillRect(float x, float y, float w, float h, Color color)
我怎样才能以不同的方式画圆?
【问题讨论】:
-
优化?现在是不是太慢了?
-
你在用windows吗?如果是这样添加标签。我希望我的代码是多系统的(不要怎么说它不同的方式),优化?现在是不是太慢了?是的。简单地说,当我画 100 个四边形 fps = ~3000/4000,现在画一个圆圈 fps = ~1500
-
C++ 没有内置的方法来绘制形状。您必须使用库。那你用的是什么库?
-
@user202729 我正在使用 opengl 绘制四边形。我没有添加 opengl 标记,因为我的示例不包含任何 opengl 调用。有什么不同的数学方程式可以用来画圆吗?也许毕达哥拉斯 - 我在某个地方看到过这样渲染的圆圈,但很久以前。