Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-apps-script/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Optimization 如何更快地渲染400+;带SFML的多边形_Optimization_Opengl_Drawing_Rendering_Sfml - Fatal编程技术网

Optimization 如何更快地渲染400+;带SFML的多边形

Optimization 如何更快地渲染400+;带SFML的多边形,optimization,opengl,drawing,rendering,sfml,Optimization,Opengl,Drawing,Rendering,Sfml,我正在对移动的行星和它们之间的引力做一个基本的模拟,并用一个大的绿色矢量场显示引力,这些矢量指向引力拉动它们的方向和引力的大小 这意味着我有400多条线,它们实际上是带旋转的矩形,每一帧都会被重新绘制,这会降低我的帧速率除了减少生产线外,是否还有其他优化方法?即使有许多复杂的多边形/颜色,今天的2d OpenGL游戏如何实现如此高的帧速率? 编辑: SFML实际渲染每个帧,但我创建线条的方式是创建一个类似于sf::Shape的矩形。生成函数采用宽度,并将点1设置为(0,宽度),点2设置为(0,-

我正在对移动的行星和它们之间的引力做一个基本的模拟,并用一个大的绿色矢量场显示引力,这些矢量指向引力拉动它们的方向和引力的大小

这意味着我有400多条线,它们实际上是带旋转的矩形,每一帧都会被重新绘制,这会降低我的帧速率除了减少生产线外,是否还有其他优化方法?即使有许多复杂的多边形/颜色,今天的2d OpenGL游戏如何实现如此高的帧速率?

编辑:

SFML实际渲染每个帧,但我创建线条的方式是创建一个类似于sf::Shape的矩形。生成函数采用宽度,并将点1设置为(0,宽度),点2设置为(0,-宽度),点3设置为(线宽,-宽度),点4设置为(线宽,宽度)。这将形成一个沿正x轴延伸的矩形。最后,我将矩形绕(0,0)旋转,使其朝向正确的方向,并将形状位置设置为线条起点所在的位置。

大批量和大批量。还要仔细检查您在模拟更新代码中花费的时间

快速检查:如果在主渲染循环附近有一个
glBegin()
,则可能是做错了

计算所有顶点位置,然后将它们通过流传输到GPU。如果您能容忍一些延迟,请使用两个VBO和双缓冲区

今天的2d OpenGL游戏如何实现如此高的帧速率,即使有许多复杂的多边形/颜色

我想象不画400+4个顶点的对象,每个对象都用矩阵旋转和缩放

如果你想画很多这样的东西,你必须停止依赖SFML的绘图类。这会带来很多开销。你必须用正确的方法:画线


如果你坚持每条线都有一个单独的宽度,那么你就不能使用GL_线。相反,您必须计算“线”的四个位置,并将它们粘贴到缓冲区对象中。然后,用一个GL_四边形调用绘制它们。您将需要使用适当的工具使这项工作相当快。

您需要告诉更多关于当前如何渲染线条的信息。此外,线条不仅仅是“旋转的矩形”。@Nicol Bolas我的线条是=),我在上面添加了一个解释。