首页 文章

SDL加速渲染

提问于
浏览
4

我试图了解使用SDL 2.0的整个2D加速渲染过程 .
所以我的问题是在屏幕上绘制圆圈的最有效方法是什么?为什么?

有些方法是:

  • 首先创建一个软件表面,然后在该表面上绘制必要的像素,然后从该表面创建一个纹理,最后将该纹理复制到渲染目标 .

  • 另一个实现是使用SDL_RenderDrawLine多次绘制一个圆圈 . 我认为这是在SDL 2.0 gfx中实现它的方式

或者有更有效的方法来完成所有这些?

如果我想手动绘制其他形状,可能无法使用SDL提供的2D渲染API(使用绘制线或矩形)轻松渲染,请更广泛地考虑这个问题 .

1 回答

  • 1

    以圆圈为例,这是一个相当复杂的问题,它更多地基于您希望实现的视觉质量,这将提高性能 . 如果您愿意使用60条线条,那么绘制大量的短线将根据您希望得到的圆圈的接近程度而有很大差异,这些线条几乎可以无缝地对小形状起作用,但如果按比例放大则看起来不是一个圆圈,性能可能会更好(取决于用户的硬件) . 另请注意,SDL_RenderDrawLines对于许多行来说要快得多,因为它避免了大量用于渲染调用的上下文切换 .

    但是,如果你需要一个包含数千行的非常精确的圆来获得良好的近似值,那么简单地使用位图并缩放和blit就会更快 . 这也会给你一个“更顺畅”的感觉 .

    在我个人看来,我不认为硬件加速渲染API在一些特殊用途之外有很多用途,例如图形渲染和可能非常简单的GUI绘图 . 对于任何更复杂的东西,我通常会使用基于位图的绘图 .

    关于第二部分,它还取决于您需要绘制的任何弧的精度 . 如果您可以很容易地将形状近似为几十行,那么它将很快,否则像素方法会更好 .

相关问题