分配未用作目标的SDL目标纹理是否会受到惩罚?

3
我知道SDL_TEXTUREACCESS_STATICSDL_TEXTUREACCESS_TARGET之间的区别。我正在为一个游戏编写SDL后端,其平台无关的核心不会告诉平台相关的纹理分配器纹理是否只是用于屏幕贴图或者纹理本身也被用作目标。
因此,我的SDL后端的纹理分配器必须对它分配的每个纹理使用SDL_TEXTUREACCESS_TARGET而不是SDL_TEXTUREACCESS_STATIC,因为它在分配时无法确定纹理是否只用于屏幕贴图还是是否也用作目标。
然而,在实践中,有很多纹理是被分配为SDL_TEXTUREACCESS_TARGET,即使它们从未被用作目标,它们只是被贴到屏幕上而从未修改其内容。
这样做有什么惩罚吗?假设一个纹理从未被用作目标本身,但仍然使用SDL_TEXTUREACCESS_TARGET进行分配。这是否会带来重大惩罚?如果是的话,我当然可以重新编写平台无关的核心,以告诉平台相关的部分纹理是否实际上将用作目标,但由于这是一项重大工程,我首先想问一下是否存在实际惩罚,当仅使用SDL_TEXTUREACCESS_TARGET用于每个纹理时,无论它是否被用作目标。
1个回答

2

我在SDL邮件列表上询问,得知在OpenGL上没有太大的惩罚,但在Direct3D上(这是Windows上默认的驱动程序),有一个问题,即当窗口大小更改或切换窗口显示模式(全屏,窗口等)时,Direct3D会重置目标纹理。因此,应用程序需要准备处理SDL_RENDER_TARGETS_RESET并更新目标纹理的内容,如果需要在窗口大小更改等情况下保留内容。因此,至少在Direct3D上,使用目标而不是静态纹理会有一个较大的惩罚。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接