Home » U++ Library support » Draw, Display, Images, Bitmaps, Icons » Painter Fill with Image MSC14x64 performance issue
Re: Painter Fill with Image MSC14x64 performance issue [message #47569 is a reply to message #47386] |
Sun, 29 January 2017 21:04   |
 |
mirek
Messages: 14258 Registered: November 2005
|
Ultimate Member |
|
|
Quote:
void SpanFiller::Render(int val, int len)
{
if(val == 0) {
t += len;
s += len;
return;
}
const RGBA *e = t + len;
if(alpha != 256)
val = alpha * val >> 8;
if(val == 256)
for(int i=0;i<len;i++) if(s[i].a==255) t[i]=s[i]; else AlphaBlend(t[i], s[i]);
/* while(t < e) {
if(s->a == 255)
*t++ = *s++;
else
AlphaBlend(*t++, *s++);
}
*/ else
while(t < e)
AlphaBlendCover8(*t++, *s++, val);
}
Missed ugly bug above: t and s are member variables and need to be moved after the loop:
void SpanFiller::Render(int val, int len)
{
if(val == 0) {
t += len;
s += len;
return;
}
const RGBA *e = t + len;
if(alpha != 256)
val = alpha * val >> 8;
if(val == 256) {
for(int i=0; i < len; i++) {
if(s[i].a == 255)
t[i] = s[i];
else
AlphaBlend(t[i], s[i]);
}
t += len;
s += len;
}
else
while(t < e)
AlphaBlendCover8(*t++, *s++, val);
}
[/quote]
Maybe you could check whether this correct code is still faster?
Mirek
[Updated on: Sun, 29 January 2017 21:05] Report message to a moderator
|
|
|
Goto Forum:
Current Time: Tue May 13 17:47:36 CEST 2025
Total time taken to generate the page: 0.03453 seconds
|