I've searched the forum/sdk docs but have not found anything other than some topics suggesting drawing a solid on another layer and decreasing opacity as well as some transitions in the "BrightScreen" (sorry don't remember the name) products.
thanks
RokuJoel wrote:... 3.1 firmware devices as they will not be able to do smooth crossfades
EnTerr wrote:RokuJoel wrote:... 3.1 firmware devices as they will not be able to do smooth crossfades
What does that mean, details?
I am exploring alpha blending but don't remember seeing this in the docs, what are the 3.1 limitations regarding Alpha's?
TheEndless wrote:It's not documented, but DrawObject (and all variants) will accept and additional alpha parameter. That parameter isn't supported on 3.1, so you wouldn't be able to do a crossfade. It'd also cause a crash if you tried passing the parameter on 3.1, so you'd either need to call it conditionally, or exclude 3.1 devices altogether.
EnTerr wrote:TheEndless wrote:It's not documented, but DrawObject (and all variants) will accept and additional alpha parameter. That parameter isn't supported on 3.1, so you wouldn't be able to do a crossfade. It'd also cause a crash if you tried passing the parameter on 3.1, so you'd either need to call it conditionally, or exclude 3.1 devices altogether.
Intriguing... do you know if that extra param works on non-OpenGL fw5 devices, like the 27xx series?
TheEndless wrote:EnTerr wrote:It does.TheEndless wrote:Intriguing... do you know if that extra param works on non-OpenGL fw5 devices, like the 27xx series?It's not documented, but DrawObject (and all variants) will accept and additional alpha parameter. That parameter isn't supported on 3.1, so you wouldn't be able to do a crossfade. It'd also cause a crash if you tried passing the parameter on 3.1, so you'd either need to call it conditionally, or exclude 3.1 devices altogether.
screen.SetAplhaEnable(true)
for i = 0 to 255
hexcolor = &hFFFFFFFF - i
hexcolor2 = &hFFFFFF00 + i
screen.Clear(&hebebebFF)
screen.drawobject(0, 0, objectfadeout, hexcolor)
screen.drawobject(0, 0, objectfadein, hexcolor2)
screen.SwapBuffers()
end for
EnTerr wrote:TheEndless wrote:EnTerr wrote:It does.Intriguing... do you know if that extra param works on non-OpenGL fw5 devices, like the 27xx series?
So it must be there to stay and it's about time they document that parameter. Too many things to ask w/o doc
- What kind of value has to be passed? It did not seem to be 1 octet only for Alpha. Is it RGBA and if so what's the role of RGB there.
- Do all the other alphas get ignored when that param is present (i.e. destination's alphaEnable and source's alpha mask)?
EnTerr wrote:I tried Screen.DrawObject(x, y, region, int) - it does not crash, at least not the YAWRR way - rather program stops with error message "Member function not found in BrightScript Component or interface".
TheEndless wrote:It's an RGBA value in the range of &HFFFFFF00 to &HFFFFFFFF. No idea what the RGB portion is for. This has no effect on the destination AlphaEnable state. It should behave the same as it would if you were drawing an image that was already semi-transparent (i.e., blend pixels if AlphaEnable is true, replace pixels if AlphaEnable is false).
TheEndless wrote:It's an RGBA value in the range of &HFFFFFF00 to &HFFFFFFFF. No idea what the RGB portion is for. This has no effect on the destination AlphaEnable state. It should behave the same as it would if you were drawing an image that was already semi-transparent (i.e., blend pixels if AlphaEnable is true, replace pixels if AlphaEnable is false).
squirreltown wrote:I don't think color tinting a bitmap works if i read you right, the Roku seems to ignore the color part of the hex string if its a bitmap - if you set a bitmap color to &hFFFFFFFF or &h000000FF it looks the same.
bitmap = CreateObject("roBitmap", {width: 100, height: 100})
bitmap.Clear(&hFFFFFFFF)
screen = CreateObject("roScreen")
for i = 0 to 255
screen.DrawObject(50 + 512-2*i, 50 + 0, bitmap, RGBA(255, 255-i, 0, 255))
screen.DrawObject(50 + 0, 50 + 512-2*i, bitmap, RGBA(i, 0, 0, 255))
screen.DrawObject(50 + 2*i, 50 + 512, bitmap, RGBA(0, i, 0, 255))
screen.DrawObject(50 + 512, 50 +2*i, bitmap, RGBA(255-i, 255, 0, 255))
'screen.finish()
end for
screen.finish()
wait(0, screen.getPort())
function RGBA(r, g, b, a)
return &h1000000*r + &h10000*g + &h100*b + a
end function
EnTerr wrote:PS. bonus points if someone can explain why this code works always on Roku3 (4200) - but same code on HDMI stick (3500) shows the roScreen in only about 40-50% of the time, rest of the cases channel stays in "Loading..." screen forever (=till exiting manually). Seems like a nasty race condition bug.