gpt4 book ai didi

optimization - 如何使用 SFML 更快地渲染 400 多个多边形

转载 作者:行者123 更新时间:2023-12-03 16:51:22 25 4
gpt4 key购买 nike

我正在对移动的行星和它们之间的引力进行基本模拟,并用一大片绿色矢量显示引力,这些矢量指向引力牵引它们的方向和引力的强度。

这意味着我有 400 多条线,它们实际上是旋转的矩形,每帧都重新绘制,这会降低我的帧率。 除了减少行数之外,还有什么可以优化它的吗?即使有许多复杂的多边形/颜色,今天的 2d OpenGL 游戏如何实现如此高的帧速率?

编辑:

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

最佳答案

How do 2d OpenGL games today achieve such high frame-rates even with many complex polygons/colors?

我想象不绘制 400 多个 4 顶点对象,每个对象都用矩阵旋转和缩放。

如果你想画很多这样的东西,你将不得不停止依赖 SFML 的绘图类。这会带来很多开销。您将必须以正确的方式进行操作:画线。

如果您坚持每条线都有单独的宽度,那么您就不能使用 GL_LINES。您必须改为计算“线”的四个位置并将它们粘贴在缓冲区对象中。然后,您使用单个 GL_QUADS 调用绘制它们。您将需要使用适当的 buffer object streaming techniques使这项工作相当快。

关于optimization - 如何使用 SFML 更快地渲染 400 多个多边形,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7896999/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com