我有一个 2D 对象需要使用 OpenGL ES 2.0 以半透明的形式呈现到屏幕上。但是,对象是由几个重叠的多边形组成的。当我使用混合功能时
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
结果是多边形重叠的对象部分明显不那么透明(这是有道理的)例如,如果我正在渲染一个由两个略微重叠的圆组成的对象,alpha = .5,对象的区域圆圈重叠只会是 25% 透明,而非重叠区域将是 50% 透明。但是,我的目标是用统一的颜色和透明度渲染对象。
我知道我可以将对象渲染为不透明的中间纹理,然后将具有正确透明度的纹理渲染到屏幕上。然而,这个特定的绘图调用经常发生在不同的对象上(所以我不能缓存结果),中间步骤会严重影响性能。这可以在没有使用 OpenGL ES 2.0 的中间步骤的情况下完成吗?