我知道SDL_TEXTUREACCESS_STATIC
和SDL_TEXTUREACCESS_TARGET
之间的区别。我正在为一个游戏编写一个SDL后端,这个游戏的平台无关核心不会告诉依赖于平台的纹理分配器纹理是否只是对屏幕进行了布局,或者纹理是否也被用作目标本身。
因此,我的SDL后端纹理分配器必须对它分配的每个纹理使用SDL_TEXTUREACCESS_TARGET
而不是SDL_TEXTUREACCESS_STATIC
,因为它在分配时不知道纹理是否只会如果它也被用作目标。
然而,在实践中,将会有许多纹理被分配为SDL_TEXTUREACCESS_TARGET
,尽管它们实际上从未被用作目标,但它们只是在没有修改其内容的情况下进入屏幕。
这样做是否有任何惩罚?假设纹理从未用作目标本身,但仍然使用SDL_TEXTUREACCESS_TARGET
进行分配。这是否会受到重大处罚?如果是这样的话,我当然可以重写独立于平台的核心来告诉平台相关部分纹理是否真的会被用作目标,但由于这是一项重大努力,我首先要问的是或者不对每个纹理使用SDL_TEXTUREACCESS_TARGET
进行实际处罚,无论它是否用作目标。
答案 0 :(得分:2)
我在SDL邮件列表上询问并被告知在OpenGL上没有任何重大处罚但是在Direct3D(这是Windows上的默认驱动程序)上,Direct3D重置目标纹理的问题当窗口大小改变或切换窗口显示模式(全屏,窗口等)时,如果需要跨窗口大小保留内容,应用程序需要准备好处理SDL_RENDER_TARGETS_RESET
并更新目标纹理的内容因此,至少在Direct3D上使用目标而不是静态纹理会有一个重大的损失。