作为渲染除颜色之外的多个相同纹理的简单方法,我将一个纯白色圆圈加载到然后SDL_Texture调用SDL_SetTextureColorMod()给它我想要制作圆圈的颜色。
如果纹理是单独的(示例 1),那么这一切都可以正常工作,但如果我共享SDL_Texture以便多个对象都引用它,则意味着SDL_SetTextureColorMod()必须在对象渲染纹理之前调用每个渲染帧,因为它上次给出的颜色可能已被另一个对象更改(示例 2)。
SDL_SetTextureColorMod()对于可能有相当多共享纹理的对象,调用每个渲染帧是否会导致重大性能问题?
需要它的原因是系统是使用具有基本引用计数的共享纹理功能来设计的(我知道可能有更好的方法使用智能指针来做到这一点,但这不是这里讨论的主题)。SDL_Texture让每个对象都有自己的副本,这样它只需设置颜色一次(或每当需要更改时)而不是每个渲染帧设置颜色会更好吗?
示例1:
SDL_Texture* tex1;
SDL_Texture* tex2;
SDL_Texture* tex3;
...
// All 3 instances have their own SDL_Texture
MyObject A(tex1);
MyObject B(tex2);
MyObject C(tex3);
...
// A call to set the color of the texture is only required once for each class
Run Code Online (Sandbox Code Playgroud)
示例2:
SDL_Texture* tex;
...
// All 3 instances share the SDL_Texture
MyObject A(tex);
MyObject B(tex);
MyObject C(tex);
...
// A call to set …Run Code Online (Sandbox Code Playgroud)