except in a few special cases (no overlap, on black background) these two won’t produce equvalent results:
>> an image with no alpha, set to blendmode “add”, or an image with an alpha channel and blend mode set to normal.
so it’s not an entirely “fair” question. If you *need* one or the other, then you *need* it, case closed. However…
let’s assume you your question is theoretical, and you don’t care about any visual difference, and that you have “enough” (several hundred, -ish?) of these things to actually affect frame rate.
with a ton of caveats and other qualified disclaimers, and given the exact same configuration of objects on both tests… on “most” devices the blendmode normal with an alpha image will be faster. (spend an hour writing it and testing it on device yourself)
why? well it probably has nothing to do with alpha itself really.
rather, it probably has to do with state change. Corona might have to do the equivalent of a glBlendFunc/glBlendEquation call (and potentially a glEnable call) *per geometry*.
I’m not sure how “smart” the Corona internals are at keeping track of current state (and potentially only calling such functions when strictly necessary), but it’s easy to imagine a worst-case scenario where every other object is blend mode normal then blend mode add, so LOTS of state changes. (there’s also the possibility that Corona’s entire pipeline is now shader-based, but still you’d have to toggle something somewhere in the shader, or worse swap out shaders entirely – regardless there’s nothing faster than doing nothing :D)
it’s like the difference between these two loops (PSEUDOCODE):
setupOpenGLESDefaults() for i=1,300 do geometry:render() end -- setupOpenGLESDefaults() for i=1,300 do if (geometry.hasFancyProperties) then enableAllThoseFancyProperties() else disableAllThoseFancyProperties() end geometry:render() end
hth