代码之家  ›  专栏  ›  技术社区  ›  Andreas

在分配从未用作目标的SDL目标纹理时,是否有任何惩罚?

  •  3
  • Andreas  · 技术社区  · 7 年前

    我知道 SDL_TEXTUREACCESS_STATIC SDL_TEXTUREACCESS_TARGET

    因此,我的SDL后端的纹理分配器必须使用 SDL\u TEXTUREACCESS\u目标 而不是

    然而,在实践中,会有许多纹理被分配为 虽然它们实际上从未被用作目标,但它们只是在屏幕上一闪而过,没有修改过它们的内容。

    这样做有什么惩罚吗?假设纹理本身从未用作目标,但仍使用 SDL\u TEXTUREACCESS\u目标 . 这会带来重大处罚吗?如果是这样的话,我当然可以重写独立于平台的内核,告诉依赖于平台的部分,纹理是否真的会被用作目标,但由于这是一项主要工作,我首先想问一下,当仅仅使用 对于每个纹理,无论它是否用作目标。

    1 回复  |  直到 7 年前
        1
  •  2
  •   Andreas    7 年前

    我在SDL邮件列表上询问过,他们告诉我,在OpenGL上没有任何重大处罚,但在Direct3D(Windows上的默认驱动程序)上,存在一个问题,即当窗口大小更改或切换窗口显示模式(全屏、窗口等)时,Direct3D会重置目标纹理,因此应用程序需要准备好处理 SDL_RENDER_TARGETS_RESET 如果需要在窗口大小变化等情况下保留内容,请更新目标纹理的内容。因此,至少在Direct3D上,使用目标纹理而不是静态纹理时会受到严重的惩罚。