Improve object ordering again, reduce some jitter issues

This commit is contained in:
Hector Martin 2010-12-18 21:23:32 +01:00
parent 3d1c344830
commit 6cc9d9d9d1

View file

@ -730,7 +730,6 @@ float olRenderFrame(int max_fps)
if (!(params.render_flags & RENDER_NOREORDER)) { if (!(params.render_flags & RENDER_NOREORDER)) {
Point closest_to = {-1,-1,0}; // first look for the object nearest the topleft Point closest_to = {-1,-1,0}; // first look for the object nearest the topleft
//Point closest_to = last_render_point;
while(cnt) { while(cnt) {
Object *closest = NULL; Object *closest = NULL;
for (i=0; i<wframe.objcnt; i++) { for (i=0; i<wframe.objcnt; i++) {
@ -740,11 +739,9 @@ float olRenderFrame(int max_fps)
continue; continue;
float dx = wframe.objects[i].points[0].x - closest_to.x; float dx = wframe.objects[i].points[0].x - closest_to.x;
float dy = wframe.objects[i].points[0].y - closest_to.y; float dy = wframe.objects[i].points[0].y - closest_to.y;
if (frames[cwbuf].pnext == 0) {
dx = wframe.objects[i].points[0].x + 1; dx = wframe.objects[i].points[0].x + 1;
dy = wframe.objects[i].points[0].y + 1; dy = wframe.objects[i].points[0].y + 1;
} float distance = fmaxf(fabsf(dx),fabsf(dy)) + 0.01*(fabsf(dx)+fabsf(dy));
float distance = fmaxf(fabsf(dx),fabsf(dy));
if (!closest || distance < dclosest) { if (!closest || distance < dclosest) {
closest = &wframe.objects[i]; closest = &wframe.objects[i];
clinv = 0; clinv = 0;
@ -752,7 +749,7 @@ float olRenderFrame(int max_fps)
} }
dx = wframe.objects[i].points[wframe.objects[i].pointcnt-1].x - closest_to.x; dx = wframe.objects[i].points[wframe.objects[i].pointcnt-1].x - closest_to.x;
dy = wframe.objects[i].points[wframe.objects[i].pointcnt-1].y - closest_to.y; dy = wframe.objects[i].points[wframe.objects[i].pointcnt-1].y - closest_to.y;
distance = fmaxf(fabsf(dx),fabsf(dy)); distance = fmaxf(fabsf(dx),fabsf(dy)) + 0.01*(fabsf(dx)+fabsf(dy));
if(!closest || distance < dclosest) { if(!closest || distance < dclosest) {
closest = &wframe.objects[i]; closest = &wframe.objects[i];
clinv = 1; clinv = 1;