我正在为 IOS 开发小型 2d 渲染引擎。我想渲染许多位于不同纹理中的精灵。现在听起来很简单......只需渲染属于相同纹理的所有精灵并移动到下一个......但是如何处理具有不同纹理的图元的重叠?
我想以与图片完全相同的方式渲染它们(重叠)。这意味着我需要切换纹理三次。如果我有数百个这样的混合精灵怎么办?避免在客户端上切换纹理并一次性渲染所有精灵。我在片段着色器中使用以下代码:
if(txt >= 0.5)
gl_FragColor = texture2D(texture1, texCoords)* clr;
if (txt >= 1.5)
gl_FragColor = texture2D(texture2, texCoords)* clr;
if (txt >= 2.5)
gl_FragColor= texture2D(texture3, texCoords)* clr;
if (txt >= 3.5)
gl_FragColor = texture2D(texture4, texCoords)* clr;
if (txt >= 4.5)
gl_FragColor = texture2D(texture5, texCoords) * clr;
由于动态分支,我在设备上运行时遇到性能问题。有更好的解决方案吗?