/* TestGfxPrimitives Test graphics primitive routines for accuracy (visual) and speed. */ #ifdef DREAMCAST #include <kos.h> KOS_INIT_FLAGS(INIT_DEFAULT); #endif #ifdef GP32 #include <x_gp32.h> #endif #include <stdio.h> #include <stdlib.h> #include <string.h> #include <math.h> #include <time.h> #include "SDL.h" #include "SDL_gfxPrimitives.h" #define WIDTH 320 #define HEIGHT 240 #define NUM_RANDOM 512 /* Coordinates */ static Sint16 rx1[NUM_RANDOM], rx2[NUM_RANDOM], ry1[NUM_RANDOM], ry2[NUM_RANDOM]; /* Radii and offsets */ static Sint16 rr1[NUM_RANDOM], rr2[NUM_RANDOM]; /* Start and stop angles */ static Sint16 a1[NUM_RANDOM], a2[NUM_RANDOM]; /* RGB colors and alpha */ static char rr[NUM_RANDOM], rg[NUM_RANDOM], rb[NUM_RANDOM], ra[NUM_RANDOM]; /* Generate an array of random screen coordinates and RGBA values with an offset */ void InitRandomPoints() { int i; float af; for (i=0; i<NUM_RANDOM; i++) { rx1[i]=rand() % (WIDTH/2); rx2[i]=WIDTH/2+rx1[i]; ry1[i]=60+(rand() % ((HEIGHT-80)/2)); ry2[i]=20+((HEIGHT-80)/2)+ry1[i]; rr1[i]=rand() % 32; rr2[i]=rand() % 32; a1[i]=rand() % 360; a2[i]=rand() % 360; rr[i]=rand() & 255; rg[i]=rand() & 255; rb[i]=rand() & 255; af=((float)rx1[i]/(float)(WIDTH/2)); ra[i]=(int)(255.0*af); } } #define BORDER 10 /* Set a clipping rectangle based on a rect with a border */ void SetClip (SDL_Surface *screen, int x1, int y1, int x2, int y2) { SDL_Rect clip; clip.x = x1+BORDER; clip.y = y1+BORDER; clip.w = x2-x1-2*BORDER; clip.h = y2-y1-2*BORDER; SDL_SetClipRect(screen, &clip); } void SetClipNoBorder (SDL_Surface *screen, int x1, int y1, int x2, int y2) { SDL_Rect clip; clip.x = x1; clip.y = y1; clip.w = x2-x1; clip.h = y2-y1; SDL_SetClipRect(screen, &clip); } void ClearScreen(SDL_Surface *screen, char *title) { int x,y; float stepx, stepy, fx, fy, fxy; char titletext[256]; Uint32 color; /* Setup clear color color */ if (SDL_BYTEORDER == SDL_BIG_ENDIAN) { color=SDL_MapRGBA(screen->format, 0,0,0,0); } else { color=SDL_MapRGBA(screen->format, 0,0,0,0); } /* Clear the screen */ SetClipNoBorder (screen,0,0,WIDTH-1,HEIGHT-1); SDL_FillRect (screen, NULL, color); /* Draw the colored area */ stepx=1.0/(WIDTH/2); stepy=1.0/((HEIGHT-80)/2); fx=0.0; for (x=WIDTH/2; x<WIDTH; x++) { fy=0.0; for (y=(HEIGHT-40)/2+60; y<HEIGHT; y++) { fxy=1.0-fx*fy; pixelRGBA(screen,x,y,(int)(128.0*fx*fx),(int)(128.0*fxy*fxy),(int)(128.0*fy*fy),255); fy += stepy; } fx += stepx; } /* Segment and titles */ hlineRGBA(screen, 0, WIDTH, 20-1, 255,255,255,255); hlineRGBA(screen, 0, WIDTH, 60-1, 255,255,255,255); hlineRGBA(screen, 0, WIDTH, (HEIGHT-40)/2+40+1, 255,255,255,255); hlineRGBA(screen, 0, WIDTH, (HEIGHT-40)/2+60-1, 255,255,255,255); vlineRGBA(screen, WIDTH/2, 20, HEIGHT, 255,255,255,255); strncpy(titletext,"Current Primitive: ",256); strncat(titletext,title,256); stringRGBA (screen, WIDTH/2-4*strlen(titletext),10-4,titletext,255,255,255,255); strncpy(titletext,"A=255 on Black",256); stringRGBA (screen, WIDTH/4-4*strlen(titletext),50-4,titletext,255,255,255,255); strncpy(titletext,"A=0-254 on Black",256); stringRGBA (screen, 3*WIDTH/4-4*strlen(titletext),50-4,titletext,255,255,255,255); strncpy(titletext,"A=255, Color Test",256); stringRGBA (screen, WIDTH/4-4*strlen(titletext),(HEIGHT-40)/2+50-4,titletext,255,255,255,255); strncpy(titletext,"A=0-254 on Color",256); stringRGBA (screen, 3*WIDTH/4-4*strlen(titletext),(HEIGHT-40)/2+50-4,titletext,255,255,255,255); } /* ======== Test and Benchmark routines ======= */ void TestPixel(SDL_Surface *screen) { int i; char r,g,b; /* Create random points */ srand(time(NULL)); InitRandomPoints(); /* Draw A=255 */ SetClip(screen,0,60,WIDTH/2,60+(HEIGHT-80)/2); for (i=0; i<NUM_RANDOM; i++) { pixelRGBA(screen, rx1[i], ry1[i], rr[i], rg[i], rb[i], 255); } /* Draw A=various */ SetClip(screen,WIDTH/2,60,WIDTH,60+(HEIGHT-80)/2); for (i=0; i<NUM_RANDOM; i++) { pixelRGBA(screen, rx2[i], ry1[i], rr[i], rg[i], rb[i], ra[i]); } /* Draw A=various */ SetClip(screen,WIDTH/2,80+(HEIGHT-80)/2,WIDTH,HEIGHT); for (i=0; i<NUM_RANDOM; i++) { pixelRGBA(screen, rx2[i], ry2[i], rr[i], rg[i], rb[i], ra[i]); } /* Draw Colortest */ SetClip(screen,0,80+(HEIGHT-80)/2,WIDTH/2,HEIGHT); for (i=0; i<NUM_RANDOM; i++) { if (rx1[i] < (WIDTH/6)) { r=255; g=0; b=0; } else if (rx1[i] < (WIDTH/3) ) { r=0; g=255; b=0; } else { r=0; g=0; b=255; } pixelRGBA(screen, rx1[i], ry2[i], r, g, b, 255); } } void BenchmarkPixel(SDL_Surface *screen) { int i,j; int repeat; Uint32 time1, time2; char titletext[256]; /* Draw A=255 */ repeat=200; SetClip(screen,0,60,WIDTH/2,60+(HEIGHT-80)/2); time1=SDL_GetTicks(); for (j=0; j<repeat; j++) { for (i=0; i<NUM_RANDOM; i++) { pixelRGBA(screen, rx1[i], ry1[i], rr[i], rg[i], rb[i], 255); } } time2=SDL_GetTicks(); /* Results */ SetClip(screen,0,0,WIDTH-1,HEIGHT-1); sprintf (titletext, "%.0f per sec",1000.0*(float)(NUM_RANDOM*repeat)/(float)(time2-time1)); stringRGBA (screen, WIDTH/4-4*strlen(titletext),30-4,titletext,255,255,255,255); /* Draw A=various */ repeat=100; SetClip(screen,WIDTH/2,60,WIDTH,60+(HEIGHT-80)/2); time1=SDL_GetTicks(); for (j=0; j<repeat; j++) { for (i=0; i<NUM_RANDOM; i++) { pixelRGBA(screen, rx2[i], ry1[i], rr[i], rg[i], rb[i], ra[i]); } } time2=SDL_GetTicks(); /* Results */ SetClip(screen,0,0,WIDTH-1,HEIGHT-1); sprintf (titletext, "%.0f per sec",1000.0*(float)(NUM_RANDOM*repeat)/(float)(time2-time1)); stringRGBA (screen, 3*WIDTH/4-4*strlen(titletext),30-4,titletext,255,255,255,255); } void TestHline(SDL_Surface *screen) { int i; char r,g,b; /* Create random points */ srand(time(NULL)); InitRandomPoints(); /* Draw A=255 */ SetClip(screen,0,60,WIDTH/2,60+(HEIGHT-80)/2); for (i=0; i<NUM_RANDOM; i += 2) { hlineRGBA(screen, rx1[i], rx1[i+1], ry1[i+1], rr[i], rg[i], rb[i], 255); } /* Draw A=various */ SetClip(screen,WIDTH/2,60,WIDTH,60+(HEIGHT-80)/2); for (i=0; i<NUM_RANDOM; i += 2) { hlineRGBA(screen, rx2[i], rx2[i+1], ry1[i+1], rr[i], rg[i], rb[i], ra[i]); } /* Draw A=various */ SetClip(screen,WIDTH/2,80+(HEIGHT-80)/2,WIDTH,HEIGHT); for (i=0; i<NUM_RANDOM; i += 2) { hlineRGBA(screen, rx2[i], rx2[i+1], ry2[i+1], rr[i], rg[i], rb[i], ra[i]); } /* Draw Colortest */ SetClip(screen,0,80+(HEIGHT-80)/2,WIDTH/2,HEIGHT); for (i=0; i<NUM_RANDOM; i += 2) { if (rx1[i] < (WIDTH/6)) { r=255; g=0; b=0; } else if (rx1[i] < (WIDTH/3) ) { r=0; g=255; b=0; } else { r=0; g=0; b=255; } hlineRGBA(screen, rx1[i], rx1[i]+rr1[i], ry2[i+1], r, g, b, 255); } } void BenchmarkHline(SDL_Surface *screen) { int i,j; int repeat; Uint32 time1, time2; char titletext[256]; /* Draw A=255 */ repeat=200; SetClip(screen,0,60,WIDTH/2,60+(HEIGHT-80)/2); time1=SDL_GetTicks(); for (j=0; j<repeat; j++) { for (i=0; i<NUM_RANDOM; i++) { hlineRGBA(screen, rx1[i], rx1[i+1], ry1[i+1], rr[i], rg[i], rb[i], 255); } } time2=SDL_GetTicks(); /* Results */ SetClip(screen,0,0,WIDTH-1,HEIGHT-1); sprintf (titletext, "%.0f per sec",1000.0*(float)(NUM_RANDOM*repeat)/(float)(time2-time1)); stringRGBA (screen, WIDTH/4-4*strlen(titletext),30-4,titletext,255,255,255,255); /* Draw A=various */ repeat=100; SetClip(screen,WIDTH/2,60,WIDTH,60+(HEIGHT-80)/2); time1=SDL_GetTicks(); for (j=0; j<repeat; j++) { for (i=0; i<NUM_RANDOM; i++) { hlineRGBA(screen, rx2[i], rx2[i+1], ry1[i+1], rr[i], rg[i], rb[i], ra[i]); } } time2=SDL_GetTicks(); /* Results */ SetClip(screen,0,0,WIDTH-1,HEIGHT-1); sprintf (titletext, "%.0f per sec",1000.0*(float)(NUM_RANDOM*repeat)/(float)(time2-time1)); stringRGBA (screen, 3*WIDTH/4-4*strlen(titletext),30-4,titletext,255,255,255,255); } void TestVline(SDL_Surface *screen) { int i; char r,g,b; /* Create random points */ srand(time(NULL)); InitRandomPoints(); /* Draw A=255 */ SetClip(screen,0,60,WIDTH/2,60+(HEIGHT-80)/2); for (i=0; i<NUM_RANDOM; i += 2) { vlineRGBA(screen, rx1[i], ry1[i], ry1[i+1], rr[i], rg[i], rb[i], 255); } /* Draw A=various */ SetClip(screen,WIDTH/2,60,WIDTH,60+(HEIGHT-80)/2); for (i=0; i<NUM_RANDOM; i += 2) { vlineRGBA(screen, rx2[i], ry1[i], ry1[i+1], rr[i], rg[i], rb[i], ra[i]); } /* Draw A=various */ SetClip(screen,WIDTH/2,80+(HEIGHT-80)/2,WIDTH,HEIGHT); for (i=0; i<NUM_RANDOM; i += 2) { vlineRGBA(screen, rx2[i], ry2[i], ry2[i+1], rr[i], rg[i], rb[i], ra[i]); } /* Draw Colortest */ SetClip(screen,0,80+(HEIGHT-80)/2,WIDTH/2,HEIGHT); for (i=0; i<NUM_RANDOM; i += 2) { if (rx1[i] < (WIDTH/6)) { r=255; g=0; b=0; } else if (rx1[i] < (WIDTH/3) ) { r=0; g=255; b=0; } else { r=0; g=0; b=255; } vlineRGBA(screen, rx1[i], ry2[i], ry2[i]+rr1[i], r, g, b, 255); } } void BenchmarkVline(SDL_Surface *screen) { int i,j; int repeat; Uint32 time1, time2; char titletext[256]; /* Draw A=255 */ repeat=200; SetClip(screen,0,60,WIDTH/2,60+(HEIGHT-80)/2); time1=SDL_GetTicks(); for (j=0; j<repeat; j++) { for (i=0; i<NUM_RANDOM; i++) { vlineRGBA(screen, rx1[i], ry1[i], ry1[i+1], rr[i], rg[i], rb[i], 255); } } time2=SDL_GetTicks(); /* Results */ SetClip(screen,0,0,WIDTH-1,HEIGHT-1); sprintf (titletext, "%.0f per sec",1000.0*(float)(NUM_RANDOM*repeat)/(float)(time2-time1)); stringRGBA (screen, WIDTH/4-4*strlen(titletext),30-4,titletext,255,255,255,255); /* Draw A=various */ repeat=100; SetClip(screen,WIDTH/2,60,WIDTH,60+(HEIGHT-80)/2); time1=SDL_GetTicks(); for (j=0; j<repeat; j++) { for (i=0; i<NUM_RANDOM; i++) { vlineRGBA(screen, rx2[i], ry1[i], ry1[i+1], rr[i], rg[i], rb[i], ra[i]); } } time2=SDL_GetTicks(); /* Results */ SetClip(screen,0,0,WIDTH-1,HEIGHT-1); sprintf (titletext, "%.0f per sec",1000.0*(float)(NUM_RANDOM*repeat)/(float)(time2-time1)); stringRGBA (screen, 3*WIDTH/4-4*strlen(titletext),30-4,titletext,255,255,255,255); } void TestRectangle(SDL_Surface *screen) { int i; char r,g,b; /* Create random points */ srand(time(NULL)); InitRandomPoints(); /* Draw A=255 */ SetClip(screen,0,60,WIDTH/2,60+(HEIGHT-80)/2); for (i=0; i<NUM_RANDOM; i += 2) { rectangleRGBA(screen, rx1[i], ry1[i], rx1[i+1], ry1[i+1], rr[i], rg[i], rb[i], 255); } /* Draw A=various */ SetClip(screen,WIDTH/2,60,WIDTH,60+(HEIGHT-80)/2); for (i=0; i<NUM_RANDOM; i += 2) { rectangleRGBA(screen, rx2[i], ry1[i], rx2[i+1], ry1[i+1], rr[i], rg[i], rb[i], ra[i]); } /* Draw A=various */ SetClip(screen,WIDTH/2,80+(HEIGHT-80)/2,WIDTH,HEIGHT); for (i=0; i<NUM_RANDOM; i += 2) { rectangleRGBA(screen, rx2[i], ry2[i], rx2[i+1], ry2[i+1], rr[i], rg[i], rb[i], ra[i]); } /* Draw Colortest */ SetClip(screen,0,80+(HEIGHT-80)/2,WIDTH/2,HEIGHT); for (i=0; i<NUM_RANDOM; i += 2) { if (rx1[i] < (WIDTH/6)) { r=255; g=0; b=0; } else if (rx1[i] < (WIDTH/3) ) { r=0; g=255; b=0; } else { r=0; g=0; b=255; } rectangleRGBA(screen, rx1[i], ry2[i], rx1[i]+rr1[i], ry2[i]+rr2[i], r, g, b, 255); } } void BenchmarkRectangle(SDL_Surface *screen) { int i,j; int repeat; Uint32 time1, time2; char titletext[256]; /* Draw A=255 */ repeat=200; SetClip(screen,0,60,WIDTH/2,60+(HEIGHT-80)/2); time1=SDL_GetTicks(); for (j=0; j<repeat; j++) { for (i=0; i<NUM_RANDOM; i += 2) { rectangleRGBA(screen, rx1[i], ry1[i], rx1[i+1], ry1[i+1], rr[i], rg[i], rb[i], 255); } } time2=SDL_GetTicks(); /* Results */ SetClip(screen,0,0,WIDTH-1,HEIGHT-1); sprintf (titletext, "%.0f per sec",1000.0*(float)((NUM_RANDOM/2)*repeat)/(float)(time2-time1)); stringRGBA (screen, WIDTH/4-4*strlen(titletext),30-4,titletext,255,255,255,255); /* Draw A=various */ repeat=10; SetClip(screen,WIDTH/2,60,WIDTH,60+(HEIGHT-80)/2); time1=SDL_GetTicks(); for (j=0; j<repeat; j++) { for (i=0; i<NUM_RANDOM; i += 2) { rectangleRGBA(screen, rx2[i], ry1[i], rx2[i+1], ry1[i+1], rr[i], rg[i], rb[i], ra[i]); } } time2=SDL_GetTicks(); /* Results */ SetClip(screen,0,0,WIDTH-1,HEIGHT-1); sprintf (titletext, "%.0f per sec",1000.0*(float)((NUM_RANDOM/2)*repeat)/(float)(time2-time1)); stringRGBA (screen, 3*WIDTH/4-4*strlen(titletext),30-4,titletext,255,255,255,255); } void TestBoxTwo(SDL_Surface *screen) { int i; char r,g,b; /* Create random points */ srand(time(NULL)); InitRandomPoints(); /* Draw A=255 */ SetClip(screen,0,60,WIDTH/2,60+(HEIGHT-80)/2); for (i=0; i<NUM_RANDOM; i++) { boxRGBA(screen, rx1[i], ry1[i], rx1[i]+1, ry1[i]+1, rr[i], rg[i], rb[i], 255); } /* Draw A=various */ SetClip(screen,WIDTH/2,60,WIDTH,60+(HEIGHT-80)/2); for (i=0; i<NUM_RANDOM; i++) { boxRGBA(screen, rx2[i], ry1[i], rx2[i]+1, ry1[i]+1, rr[i], rg[i], rb[i], ra[i]); } /* Draw A=various */ SetClip(screen,WIDTH/2,80+(HEIGHT-80)/2,WIDTH,HEIGHT); for (i=0; i<NUM_RANDOM; i++) { boxRGBA(screen, rx2[i], ry2[i], rx2[i]+1, ry2[i]+1, rr[i], rg[i], rb[i], ra[i]); } /* Draw Colortest */ SetClip(screen,0,80+(HEIGHT-80)/2,WIDTH/2,HEIGHT); for (i=0; i<NUM_RANDOM; i++) { if (rx1[i] < (WIDTH/6)) { r=255; g=0; b=0; } else if (rx1[i] < (WIDTH/3) ) { r=0; g=255; b=0; } else { r=0; g=0; b=255; } boxRGBA(screen, rx1[i], ry2[i], rx1[i]+1, ry2[i]+1, r, g, b, 255); } } void BenchmarkBoxTwo(SDL_Surface *screen) { int i,j; int repeat; Uint32 time1, time2; char titletext[256]; /* Draw A=255 */ repeat=50; SetClip(screen,0,60,WIDTH/2,60+(HEIGHT-80)/2); time1=SDL_GetTicks(); for (j=0; j<repeat; j++) { for (i=0; i<NUM_RANDOM; i++) { boxRGBA(screen, rx1[i], ry1[i], rx1[i]+1, ry1[i]+1, rr[i], rg[i], rb[i], 255); } } time2=SDL_GetTicks(); /* Results */ SetClip(screen,0,0,WIDTH-1,HEIGHT-1); sprintf (titletext, "%.0f per sec",1000.0*(float)(NUM_RANDOM*repeat)/(float)(time2-time1)); stringRGBA (screen, WIDTH/4-4*strlen(titletext),30-4,titletext,255,255,255,255); /* Draw A=various */ repeat=50; SetClip(screen,WIDTH/2,60,WIDTH,60+(HEIGHT-80)/2); time1=SDL_GetTicks(); for (j=0; j<repeat; j++) { for (i=0; i<NUM_RANDOM; i++) { boxRGBA(screen, rx2[i], ry1[i], rx2[i]+1, ry1[i]+1, rr[i], rg[i], rb[i], ra[i]); } } time2=SDL_GetTicks(); /* Results */ SetClip(screen,0,0,WIDTH-1,HEIGHT-1); sprintf (titletext, "%.0f per sec",1000.0*(float)(NUM_RANDOM*repeat)/(float)(time2-time1)); stringRGBA (screen, 3*WIDTH/4-4*strlen(titletext),30-4,titletext,255,255,255,255); } void TestBox(SDL_Surface *screen) { int i; char r,g,b; /* Create random points */ srand(time(NULL)); InitRandomPoints(); /* Draw A=255 */ SetClip(screen,0,60,WIDTH/2,60+(HEIGHT-80)/2); for (i=0; i<NUM_RANDOM; i += 2) { boxRGBA(screen, rx1[i], ry1[i], rx1[i+1], ry1[i+1], rr[i], rg[i], rb[i], 255); } /* Draw A=various */ SetClip(screen,WIDTH/2,60,WIDTH,60+(HEIGHT-80)/2); for (i=0; i<NUM_RANDOM; i += 2) { boxRGBA(screen, rx2[i], ry1[i], rx2[i+1], ry1[i+1], rr[i], rg[i], rb[i], ra[i]); } /* Draw A=various */ SetClip(screen,WIDTH/2,80+(HEIGHT-80)/2,WIDTH,HEIGHT); for (i=0; i<NUM_RANDOM; i += 2) { boxRGBA(screen, rx2[i], ry2[i], rx2[i+1], ry2[i+1], rr[i], rg[i], rb[i], ra[i]); } /* Draw Colortest */ SetClip(screen,0,80+(HEIGHT-80)/2,WIDTH/2,HEIGHT); for (i=0; i<NUM_RANDOM; i += 2) { if (rx1[i] < (WIDTH/6)) { r=255; g=0; b=0; } else if (rx1[i] < (WIDTH/3) ) { r=0; g=255; b=0; } else { r=0; g=0; b=255; } boxRGBA(screen, rx1[i], ry2[i], rx1[i]+rr1[i], ry2[i]+rr2[i], r, g, b, 255); } } void BenchmarkBox(SDL_Surface *screen) { int i,j; int repeat; Uint32 time1, time2; char titletext[256]; /* Draw A=255 */ repeat=10; SetClip(screen,0,60,WIDTH/2,60+(HEIGHT-80)/2); time1=SDL_GetTicks(); for (j=0; j<repeat; j++) { for (i=0; i<NUM_RANDOM; i += 2) { boxRGBA(screen, rx1[i], ry1[i], rx1[i+1], ry1[i+1], rr[i], rg[i], rb[i], 255); } } time2=SDL_GetTicks(); /* Results */ SetClip(screen,0,0,WIDTH-1,HEIGHT-1); sprintf (titletext, "%.0f per sec",1000.0*(float)((NUM_RANDOM/2)*repeat)/(float)(time2-time1)); stringRGBA (screen, WIDTH/4-4*strlen(titletext),30-4,titletext,255,255,255,255); /* Draw A=various */ repeat=1; SetClip(screen,WIDTH/2,60,WIDTH,60+(HEIGHT-80)/2); time1=SDL_GetTicks(); for (j=0; j<repeat; j++) { for (i=0; i<NUM_RANDOM; i += 2) { boxRGBA(screen, rx2[i], ry1[i], rx2[i+1], ry1[i+1], rr[i], rg[i], rb[i], ra[i]); } } time2=SDL_GetTicks(); /* Results */ SetClip(screen,0,0,WIDTH-1,HEIGHT-1); sprintf (titletext, "%.0f per sec",1000.0*(float)((NUM_RANDOM/2)*repeat)/(float)(time2-time1)); stringRGBA (screen, 3*WIDTH/4-4*strlen(titletext),30-4,titletext,255,255,255,255); } void TestLine(SDL_Surface *screen) { int i; char r,g,b; /* Create random points */ srand(time(NULL)); InitRandomPoints(); /* Draw A=255 */ SetClip(screen,0,60,WIDTH/2,60+(HEIGHT-80)/2); for (i=0; i<NUM_RANDOM; i += 2) { lineRGBA(screen, rx1[i], ry1[i], rx1[i+1], ry1[i+1], rr[i], rg[i], rb[i], 255); } /* Draw A=various */ SetClip(screen,WIDTH/2,60,WIDTH,60+(HEIGHT-80)/2); for (i=0; i<NUM_RANDOM; i += 2) { lineRGBA(screen, rx2[i], ry1[i], rx2[i+1], ry1[i+1], rr[i], rg[i], rb[i], ra[i]); } /* Draw A=various */ SetClip(screen,WIDTH/2,80+(HEIGHT-80)/2,WIDTH,HEIGHT); for (i=0; i<NUM_RANDOM; i += 2) { lineRGBA(screen, rx2[i], ry2[i], rx2[i+1], ry2[i+1], rr[i], rg[i], rb[i], ra[i]); } /* Draw Colortest */ SetClip(screen,0,80+(HEIGHT-80)/2,WIDTH/2,HEIGHT); for (i=0; i<NUM_RANDOM; i += 2) { if (rx1[i] < (WIDTH/6)) { r=255; g=0; b=0; } else if (rx1[i] < (WIDTH/3) ) { r=0; g=255; b=0; } else { r=0; g=0; b=255; } lineRGBA(screen, rx1[i], ry2[i], rx1[i]+rr1[i], ry2[i]+rr2[i], r, g, b, 255); } } void BenchmarkLine(SDL_Surface *screen) { int i,j; int repeat; Uint32 time1, time2; char titletext[256]; /* Draw A=255 */ repeat=100; SetClip(screen,0,60,WIDTH/2,60+(HEIGHT-80)/2); time1=SDL_GetTicks(); for (j=0; j<repeat; j++) { for (i=0; i<NUM_RANDOM; i += 2) { lineRGBA(screen, rx1[i], ry1[i], rx1[i+1], ry1[i+1], rr[i], rg[i], rb[i], 255); } } time2=SDL_GetTicks(); /* Results */ SetClip(screen,0,0,WIDTH-1,HEIGHT-1); sprintf (titletext, "%.0f per sec",1000.0*(float)((NUM_RANDOM/2)*repeat)/(float)(time2-time1)); stringRGBA (screen, WIDTH/4-4*strlen(titletext),30-4,titletext,255,255,255,255); /* Draw A=various */ repeat=5; SetClip(screen,WIDTH/2,60,WIDTH,60+(HEIGHT-80)/2); time1=SDL_GetTicks(); for (j=0; j<repeat; j++) { for (i=0; i<NUM_RANDOM; i += 2) { lineRGBA(screen, rx2[i], ry1[i], rx2[i+1], ry1[i+1], rr[i], rg[i], rb[i], ra[i]); } } time2=SDL_GetTicks(); /* Results */ SetClip(screen,0,0,WIDTH-1,HEIGHT-1); sprintf (titletext, "%.0f per sec",1000.0*(float)((NUM_RANDOM/2)*repeat)/(float)(time2-time1)); stringRGBA (screen, 3*WIDTH/4-4*strlen(titletext),30-4,titletext,255,255,255,255); } void TestAALine(SDL_Surface *screen) { int i; char r,g,b; /* Create random points */ srand(time(NULL)); InitRandomPoints(); /* Draw A=255 */ SetClip(screen,0,60,WIDTH/2,60+(HEIGHT-80)/2); for (i=0; i<NUM_RANDOM; i += 2) { aalineRGBA(screen, rx1[i], ry1[i], rx1[i+1], ry1[i+1], rr[i], rg[i], rb[i], 255); } /* Draw A=various */ SetClip(screen,WIDTH/2,60,WIDTH,60+(HEIGHT-80)/2); for (i=0; i<NUM_RANDOM; i += 2) { aalineRGBA(screen, rx2[i], ry1[i], rx2[i+1], ry1[i+1], rr[i], rg[i], rb[i], ra[i]); } /* Draw A=various */ SetClip(screen,WIDTH/2,80+(HEIGHT-80)/2,WIDTH,HEIGHT); for (i=0; i<NUM_RANDOM; i += 2) { aalineRGBA(screen, rx2[i], ry2[i], rx2[i+1], ry2[i+1], rr[i], rg[i], rb[i], ra[i]); } /* Draw Colortest */ SetClip(screen,0,80+(HEIGHT-80)/2,WIDTH/2,HEIGHT); for (i=0; i<NUM_RANDOM; i += 2) { if (rx1[i] < (WIDTH/6)) { r=255; g=0; b=0; } else if (rx1[i] < (WIDTH/3) ) { r=0; g=255; b=0; } else { r=0; g=0; b=255; } aalineRGBA(screen, rx1[i], ry2[i], rx1[i]+rr1[i], ry2[i]+rr2[i], r, g, b, 255); } } void BenchmarkAALine(SDL_Surface *screen) { int i,j; int repeat; Uint32 time1, time2; char titletext[256]; /* Draw A=255 */ repeat=5; SetClip(screen,0,60,WIDTH/2,60+(HEIGHT-80)/2); time1=SDL_GetTicks(); for (j=0; j<repeat; j++) { for (i=0; i<NUM_RANDOM; i += 2) { aalineRGBA(screen, rx1[i], ry1[i], rx1[i+1], ry1[i+1], rr[i], rg[i], rb[i], 255); } } time2=SDL_GetTicks(); /* Results */ SetClip(screen,0,0,WIDTH-1,HEIGHT-1); sprintf (titletext, "%.0f per sec",1000.0*(float)((NUM_RANDOM/2)*repeat)/(float)(time2-time1)); stringRGBA (screen, WIDTH/4-4*strlen(titletext),30-4,titletext,255,255,255,255); /* Draw A=various */ repeat=5; SetClip(screen,WIDTH/2,60,WIDTH,60+(HEIGHT-80)/2); time1=SDL_GetTicks(); for (j=0; j<repeat; j++) { for (i=0; i<NUM_RANDOM; i += 2) { aalineRGBA(screen, rx2[i], ry1[i], rx2[i+1], ry1[i+1], rr[i], rg[i], rb[i], ra[i]); } } time2=SDL_GetTicks(); /* Results */ SetClip(screen,0,0,WIDTH-1,HEIGHT-1); sprintf (titletext, "%.0f per sec",1000.0*(float)((NUM_RANDOM/2)*repeat)/(float)(time2-time1)); stringRGBA (screen, 3*WIDTH/4-4*strlen(titletext),30-4,titletext,255,255,255,255); } void TestCircle(SDL_Surface *screen) { int i; char r,g,b; /* Create random points */ srand(time(NULL)); InitRandomPoints(); /* Draw A=255 */ SetClip(screen,0,60,WIDTH/2,60+(HEIGHT-80)/2); for (i=0; i<NUM_RANDOM; i++) { circleRGBA(screen, rx1[i], ry1[i], rr1[i], rr[i], rg[i], rb[i], 255); } /* Draw A=various */ SetClip(screen,WIDTH/2,60,WIDTH,60+(HEIGHT-80)/2); for (i=0; i<NUM_RANDOM; i++) { circleRGBA(screen, rx2[i], ry1[i], rr1[i], rr[i], rg[i], rb[i], ra[i]); } /* Draw A=various */ SetClip(screen,WIDTH/2,80+(HEIGHT-80)/2,WIDTH,HEIGHT); for (i=0; i<NUM_RANDOM; i++) { circleRGBA(screen, rx2[i], ry2[i], rr1[i], rr[i], rg[i], rb[i], ra[i]); } /* Draw Colortest */ SetClip(screen,0,80+(HEIGHT-80)/2,WIDTH/2,HEIGHT); for (i=0; i<NUM_RANDOM; i++) { if (rx1[i] < (WIDTH/6)) { r=255; g=0; b=0; } else if (rx1[i] < (WIDTH/3) ) { r=0; g=255; b=0; } else { r=0; g=0; b=255; } circleRGBA(screen, rx1[i], ry2[i], rr1[i], r, g, b, 255); } } void BenchmarkCircle(SDL_Surface *screen) { int i,j; int repeat; Uint32 time1, time2; char titletext[256]; /* Draw A=255 */ repeat=20; SetClip(screen,0,60,WIDTH/2,60+(HEIGHT-80)/2); time1=SDL_GetTicks(); for (j=0; j<repeat; j++) { for (i=0; i<NUM_RANDOM; i++) { circleRGBA(screen, rx1[i], ry1[i], rr1[i], rr[i], rg[i], rb[i], 255); } } time2=SDL_GetTicks(); /* Results */ SetClip(screen,0,0,WIDTH-1,HEIGHT-1); sprintf (titletext, "%.0f per sec",1000.0*(float)(NUM_RANDOM*repeat)/(float)(time2-time1)); stringRGBA (screen, WIDTH/4-4*strlen(titletext),30-4,titletext,255,255,255,255); /* Draw A=various */ repeat=5; SetClip(screen,WIDTH/2,60,WIDTH,60+(HEIGHT-80)/2); time1=SDL_GetTicks(); for (j=0; j<repeat; j++) { for (i=0; i<NUM_RANDOM; i++) { circleRGBA(screen, rx2[i], ry1[i], rr1[i], rr[i], rg[i], rb[i], ra[i]); } } time2=SDL_GetTicks(); /* Results */ SetClip(screen,0,0,WIDTH-1,HEIGHT-1); sprintf (titletext, "%.0f per sec",1000.0*(float)(NUM_RANDOM*repeat)/(float)(time2-time1)); stringRGBA (screen, 3*WIDTH/4-4*strlen(titletext),30-4,titletext,255,255,255,255); } void TestAACircle(SDL_Surface *screen) { int i; char r,g,b; /* Create random points */ srand(time(NULL)); InitRandomPoints(); /* Draw A=255 */ SetClip(screen,0,60,WIDTH/2,60+(HEIGHT-80)/2); for (i=0; i<NUM_RANDOM; i++) { aacircleRGBA(screen, rx1[i], ry1[i], rr1[i], rr[i], rg[i], rb[i], 255); } /* Draw A=various */ SetClip(screen,WIDTH/2,60,WIDTH,60+(HEIGHT-80)/2); for (i=0; i<NUM_RANDOM; i++) { aacircleRGBA(screen, rx2[i], ry1[i], rr1[i], rr[i], rg[i], rb[i], ra[i]); } /* Draw A=various */ SetClip(screen,WIDTH/2,80+(HEIGHT-80)/2,WIDTH,HEIGHT); for (i=0; i<NUM_RANDOM; i++) { aacircleRGBA(screen, rx2[i], ry2[i], rr1[i], rr[i], rg[i], rb[i], ra[i]); } /* Draw Colortest */ SetClip(screen,0,80+(HEIGHT-80)/2,WIDTH/2,HEIGHT); for (i=0; i<NUM_RANDOM; i++) { if (rx1[i] < (WIDTH/6)) { r=255; g=0; b=0; } else if (rx1[i] < (WIDTH/3) ) { r=0; g=255; b=0; } else { r=0; g=0; b=255; } aacircleRGBA(screen, rx1[i], ry2[i], rr1[i], r, g, b, 255); } } void BenchmarkAACircle(SDL_Surface *screen) { int i,j; int repeat; Uint32 time1, time2; char titletext[256]; /* Draw A=255 */ repeat=20; SetClip(screen,0,60,WIDTH/2,60+(HEIGHT-80)/2); time1=SDL_GetTicks(); for (j=0; j<repeat; j++) { for (i=0; i<NUM_RANDOM; i++) { aacircleRGBA(screen, rx1[i], ry1[i], rr1[i], rr[i], rg[i], rb[i], 255); } } time2=SDL_GetTicks(); /* Results */ SetClip(screen,0,0,WIDTH-1,HEIGHT-1); sprintf (titletext, "%.0f per sec",1000.0*(float)(NUM_RANDOM*repeat)/(float)(time2-time1)); stringRGBA (screen, WIDTH/4-4*strlen(titletext),30-4,titletext,255,255,255,255); /* Draw A=various */ repeat=5; SetClip(screen,WIDTH/2,60,WIDTH,60+(HEIGHT-80)/2); time1=SDL_GetTicks(); for (j=0; j<repeat; j++) { for (i=0; i<NUM_RANDOM; i++) { aacircleRGBA(screen, rx2[i], ry1[i], rr1[i], rr[i], rg[i], rb[i], ra[i]); } } time2=SDL_GetTicks(); /* Results */ SetClip(screen,0,0,WIDTH-1,HEIGHT-1); sprintf (titletext, "%.0f per sec",1000.0*(float)(NUM_RANDOM*repeat)/(float)(time2-time1)); stringRGBA (screen, 3*WIDTH/4-4*strlen(titletext),30-4,titletext,255,255,255,255); } void TestFilledCircle(SDL_Surface *screen) { int i; char r,g,b; /* Create random points */ srand(time(NULL)); InitRandomPoints(); /* Draw A=255 */ SetClip(screen,0,60,WIDTH/2,60+(HEIGHT-80)/2); for (i=0; i<NUM_RANDOM; i++) { filledCircleRGBA(screen, rx1[i], ry1[i], rr1[i], rr[i], rg[i], rb[i], 255); } /* Draw A=various */ SetClip(screen,WIDTH/2,60,WIDTH,60+(HEIGHT-80)/2); for (i=0; i<NUM_RANDOM; i++) { filledCircleRGBA(screen, rx2[i], ry1[i], rr1[i], rr[i], rg[i], rb[i], ra[i]); } /* Draw A=various */ SetClip(screen,WIDTH/2,80+(HEIGHT-80)/2,WIDTH,HEIGHT); for (i=0; i<NUM_RANDOM; i++) { filledCircleRGBA(screen, rx2[i], ry2[i], rr1[i], rr[i], rg[i], rb[i], ra[i]); } /* Draw Colortest */ SetClip(screen,0,80+(HEIGHT-80)/2,WIDTH/2,HEIGHT); for (i=0; i<NUM_RANDOM; i++) { if (rx1[i] < (WIDTH/6)) { r=255; g=0; b=0; } else if (rx1[i] < (WIDTH/3) ) { r=0; g=255; b=0; } else { r=0; g=0; b=255; } filledCircleRGBA(screen, rx1[i], ry2[i], rr1[i], r, g, b, 255); } } void BenchmarkFilledCircle(SDL_Surface *screen) { int i,j; int repeat; Uint32 time1, time2; char titletext[256]; /* Draw A=255 */ repeat=20; SetClip(screen,0,60,WIDTH/2,60+(HEIGHT-80)/2); time1=SDL_GetTicks(); for (j=0; j<repeat; j++) { for (i=0; i<NUM_RANDOM; i++) { filledCircleRGBA(screen, rx1[i], ry1[i], rr1[i], rr[i], rg[i], rb[i], 255); } } time2=SDL_GetTicks(); /* Results */ SetClip(screen,0,0,WIDTH-1,HEIGHT-1); sprintf (titletext, "%.0f per sec",1000.0*(float)(NUM_RANDOM*repeat)/(float)(time2-time1)); stringRGBA (screen, WIDTH/4-4*strlen(titletext),30-4,titletext,255,255,255,255); /* Draw A=various */ repeat=5; SetClip(screen,WIDTH/2,60,WIDTH,60+(HEIGHT-80)/2); time1=SDL_GetTicks(); for (j=0; j<repeat; j++) { for (i=0; i<NUM_RANDOM; i++) { filledCircleRGBA(screen, rx2[i], ry1[i], rr1[i], rr[i], rg[i], rb[i], ra[i]); } } time2=SDL_GetTicks(); /* Results */ SetClip(screen,0,0,WIDTH-1,HEIGHT-1); sprintf (titletext, "%.0f per sec",1000.0*(float)(NUM_RANDOM*repeat)/(float)(time2-time1)); stringRGBA (screen, 3*WIDTH/4-4*strlen(titletext),30-4,titletext,255,255,255,255); } void TestEllipse(SDL_Surface *screen) { int i; char r,g,b; /* Create random points */ srand(time(NULL)); InitRandomPoints(); /* Draw A=255 */ SetClip(screen,0,60,WIDTH/2,60+(HEIGHT-80)/2); for (i=0; i<NUM_RANDOM; i++) { ellipseRGBA(screen, rx1[i], ry1[i], rr1[i], rr2[i], rr[i], rg[i], rb[i], 255); } /* Draw A=various */ SetClip(screen,WIDTH/2,60,WIDTH,60+(HEIGHT-80)/2); for (i=0; i<NUM_RANDOM; i++) { ellipseRGBA(screen, rx2[i], ry1[i], rr1[i], rr2[i], rr[i], rg[i], rb[i], ra[i]); } /* Draw A=various */ SetClip(screen,WIDTH/2,80+(HEIGHT-80)/2,WIDTH,HEIGHT); for (i=0; i<NUM_RANDOM; i++) { ellipseRGBA(screen, rx2[i], ry2[i], rr1[i], rr2[i], rr[i], rg[i], rb[i], ra[i]); } /* Draw Colortest */ SetClip(screen,0,80+(HEIGHT-80)/2,WIDTH/2,HEIGHT); for (i=0; i<NUM_RANDOM; i++) { if (rx1[i] < (WIDTH/6)) { r=255; g=0; b=0; } else if (rx1[i] < (WIDTH/3) ) { r=0; g=255; b=0; } else { r=0; g=0; b=255; } ellipseRGBA(screen, rx1[i], ry2[i], rr1[i], rr2[i], r, g, b, 255); } } void BenchmarkEllipse(SDL_Surface *screen) { int i,j; int repeat; Uint32 time1, time2; char titletext[256]; /* Draw A=255 */ repeat=20; SetClip(screen,0,60,WIDTH/2,60+(HEIGHT-80)/2); time1=SDL_GetTicks(); for (j=0; j<repeat; j++) { for (i=0; i<NUM_RANDOM; i++) { ellipseRGBA(screen, rx1[i], ry1[i], rr1[i], rr2[i], rr[i], rg[i], rb[i], 255); } } time2=SDL_GetTicks(); /* Results */ SetClip(screen,0,0,WIDTH-1,HEIGHT-1); sprintf (titletext, "%.0f per sec",1000.0*(float)(NUM_RANDOM*repeat)/(float)(time2-time1)); stringRGBA (screen, WIDTH/4-4*strlen(titletext),30-4,titletext,255,255,255,255); /* Draw A=various */ repeat=5; SetClip(screen,WIDTH/2,60,WIDTH,60+(HEIGHT-80)/2); time1=SDL_GetTicks(); for (j=0; j<repeat; j++) { for (i=0; i<NUM_RANDOM; i++) { ellipseRGBA(screen, rx2[i], ry1[i], rr1[i], rr2[i], rr[i], rg[i], rb[i], ra[i]); } } time2=SDL_GetTicks(); /* Results */ SetClip(screen,0,0,WIDTH-1,HEIGHT-1); sprintf (titletext, "%.0f per sec",1000.0*(float)(NUM_RANDOM*repeat)/(float)(time2-time1)); stringRGBA (screen, 3*WIDTH/4-4*strlen(titletext),30-4,titletext,255,255,255,255); } void TestAAEllipse(SDL_Surface *screen) { int i; char r,g,b; /* Create random points */ srand(time(NULL)); InitRandomPoints(); /* Draw A=255 */ SetClip(screen,0,60,WIDTH/2,60+(HEIGHT-80)/2); for (i=0; i<NUM_RANDOM; i++) { aaellipseRGBA(screen, rx1[i], ry1[i], rr1[i], rr2[i], rr[i], rg[i], rb[i], 255); } /* Draw A=various */ SetClip(screen,WIDTH/2,60,WIDTH,60+(HEIGHT-80)/2); for (i=0; i<NUM_RANDOM; i++) { aaellipseRGBA(screen, rx2[i], ry1[i], rr1[i], rr2[i], rr[i], rg[i], rb[i], ra[i]); } /* Draw A=various */ SetClip(screen,WIDTH/2,80+(HEIGHT-80)/2,WIDTH,HEIGHT); for (i=0; i<NUM_RANDOM; i++) { aaellipseRGBA(screen, rx2[i], ry2[i], rr1[i], rr2[i], rr[i], rg[i], rb[i], ra[i]); } /* Draw Colortest */ SetClip(screen,0,80+(HEIGHT-80)/2,WIDTH/2,HEIGHT); for (i=0; i<NUM_RANDOM; i++) { if (rx1[i] < (WIDTH/6)) { r=255; g=0; b=0; } else if (rx1[i] < (WIDTH/3) ) { r=0; g=255; b=0; } else { r=0; g=0; b=255; } aaellipseRGBA(screen, rx1[i], ry2[i], rr1[i], rr2[i], r, g, b, 255); } } void BenchmarkAAEllipse(SDL_Surface *screen) { int i,j; int repeat; Uint32 time1, time2; char titletext[256]; /* Draw A=255 */ repeat=20; SetClip(screen,0,60,WIDTH/2,60+(HEIGHT-80)/2); time1=SDL_GetTicks(); for (j=0; j<repeat; j++) { for (i=0; i<NUM_RANDOM; i++) { ellipseRGBA(screen, rx1[i], ry1[i], rr1[i], rr2[i], rr[i], rg[i], rb[i], 255); } } time2=SDL_GetTicks(); /* Results */ SetClip(screen,0,0,WIDTH-1,HEIGHT-1); sprintf (titletext, "%.0f per sec",1000.0*(float)(NUM_RANDOM*repeat)/(float)(time2-time1)); stringRGBA (screen, WIDTH/4-4*strlen(titletext),30-4,titletext,255,255,255,255); /* Draw A=various */ repeat=5; SetClip(screen,WIDTH/2,60,WIDTH,60+(HEIGHT-80)/2); time1=SDL_GetTicks(); for (j=0; j<repeat; j++) { for (i=0; i<NUM_RANDOM; i++) { aaellipseRGBA(screen, rx2[i], ry1[i], rr1[i], rr2[i], rr[i], rg[i], rb[i], ra[i]); } } time2=SDL_GetTicks(); /* Results */ SetClip(screen,0,0,WIDTH-1,HEIGHT-1); sprintf (titletext, "%.0f per sec",1000.0*(float)(NUM_RANDOM*repeat)/(float)(time2-time1)); stringRGBA (screen, 3*WIDTH/4-4*strlen(titletext),30-4,titletext,255,255,255,255); } void TestFilledEllipse(SDL_Surface *screen) { int i; char r,g,b; /* Create random points */ srand(time(NULL)); InitRandomPoints(); /* Draw A=255 */ SetClip(screen,0,60,WIDTH/2,60+(HEIGHT-80)/2); for (i=0; i<NUM_RANDOM; i++) { filledEllipseRGBA(screen, rx1[i], ry1[i], rr1[i], rr2[i], rr[i], rg[i], rb[i], 255); } /* Draw A=various */ SetClip(screen,WIDTH/2,60,WIDTH,60+(HEIGHT-80)/2); for (i=0; i<NUM_RANDOM; i++) { filledEllipseRGBA(screen, rx2[i], ry1[i], rr1[i], rr2[i], rr[i], rg[i], rb[i], ra[i]); } /* Draw A=various */ SetClip(screen,WIDTH/2,80+(HEIGHT-80)/2,WIDTH,HEIGHT); for (i=0; i<NUM_RANDOM; i++) { filledEllipseRGBA(screen, rx2[i], ry2[i], rr1[i], rr2[i], rr[i], rg[i], rb[i], ra[i]); } /* Draw Colortest */ SetClip(screen,0,80+(HEIGHT-80)/2,WIDTH/2,HEIGHT); for (i=0; i<NUM_RANDOM; i++) { if (rx1[i] < (WIDTH/6)) { r=255; g=0; b=0; } else if (rx1[i] < (WIDTH/3) ) { r=0; g=255; b=0; } else { r=0; g=0; b=255; } filledEllipseRGBA(screen, rx1[i], ry2[i], rr1[i], rr2[i], r, g, b, 255); } } void BenchmarkFilledEllipse(SDL_Surface *screen) { int i,j; int repeat; Uint32 time1, time2; char titletext[256]; /* Draw A=255 */ repeat=20; SetClip(screen,0,60,WIDTH/2,60+(HEIGHT-80)/2); time1=SDL_GetTicks(); for (j=0; j<repeat; j++) { for (i=0; i<NUM_RANDOM; i++) { filledEllipseRGBA(screen, rx1[i], ry1[i], rr1[i], rr2[i], rr[i], rg[i], rb[i], 255); } } time2=SDL_GetTicks(); /* Results */ SetClip(screen,0,0,WIDTH-1,HEIGHT-1); sprintf (titletext, "%.0f per sec",1000.0*(float)(NUM_RANDOM*repeat)/(float)(time2-time1)); stringRGBA (screen, WIDTH/4-4*strlen(titletext),30-4,titletext,255,255,255,255); /* Draw A=various */ repeat=5; SetClip(screen,WIDTH/2,60,WIDTH,60+(HEIGHT-80)/2); time1=SDL_GetTicks(); for (j=0; j<repeat; j++) { for (i=0; i<NUM_RANDOM; i++) { filledEllipseRGBA(screen, rx2[i], ry1[i], rr1[i], rr2[i], rr[i], rg[i], rb[i], ra[i]); } } time2=SDL_GetTicks(); /* Results */ SetClip(screen,0,0,WIDTH-1,HEIGHT-1); sprintf (titletext, "%.0f per sec",1000.0*(float)(NUM_RANDOM*repeat)/(float)(time2-time1)); stringRGBA (screen, 3*WIDTH/4-4*strlen(titletext),30-4,titletext,255,255,255,255); } void TestPie(SDL_Surface *screen) { int i; char r,g,b; /* Create random points */ srand(time(NULL)); InitRandomPoints(); /* Draw A=255 */ SetClip(screen,0,60,WIDTH/2,60+(HEIGHT-80)/2); for (i=0; i<NUM_RANDOM; i++) { pieRGBA(screen, rx1[i], ry1[i], rr1[i], a1[i], a2[i], rr[i], rg[i], rb[i], 255); } /* Draw A=various */ SetClip(screen,WIDTH/2,60,WIDTH,60+(HEIGHT-80)/2); for (i=0; i<NUM_RANDOM; i++) { pieRGBA(screen, rx2[i], ry1[i], rr1[i], a1[i], a2[i], rr[i], rg[i], rb[i], ra[i]); } /* Draw A=various */ SetClip(screen,WIDTH/2,80+(HEIGHT-80)/2,WIDTH,HEIGHT); for (i=0; i<NUM_RANDOM; i++) { pieRGBA(screen, rx2[i], ry2[i], rr1[i], a1[i], a2[i], rr[i], rg[i], rb[i], ra[i]); } /* Draw Colortest */ SetClip(screen,0,80+(HEIGHT-80)/2,WIDTH/2,HEIGHT); for (i=0; i<NUM_RANDOM; i++) { if (rx1[i] < (WIDTH/6)) { r=255; g=0; b=0; } else if (rx1[i] < (WIDTH/3) ) { r=0; g=255; b=0; } else { r=0; g=0; b=255; } pieRGBA(screen, rx1[i], ry2[i], rr1[i], a1[i], a2[i], r, g, b, 255); } } void BenchmarkPie(SDL_Surface *screen) { int i,j; int repeat; Uint32 time1, time2; char titletext[256]; /* Draw A=255 */ repeat=20; SetClip(screen,0,60,WIDTH/2,60+(HEIGHT-80)/2); time1=SDL_GetTicks(); for (j=0; j<repeat; j++) { for (i=0; i<NUM_RANDOM; i++) { pieRGBA(screen, rx1[i], ry1[i], rr1[i], a1[i], a2[i], rr[i], rg[i], rb[i], 255); } } time2=SDL_GetTicks(); /* Results */ SetClip(screen,0,0,WIDTH-1,HEIGHT-1); sprintf (titletext, "%.0f per sec",1000.0*(float)(NUM_RANDOM*repeat)/(float)(time2-time1)); stringRGBA (screen, WIDTH/4-4*strlen(titletext),30-4,titletext,255,255,255,255); /* Draw A=various */ repeat=5; SetClip(screen,WIDTH/2,60,WIDTH,60+(HEIGHT-80)/2); time1=SDL_GetTicks(); for (j=0; j<repeat; j++) { for (i=0; i<NUM_RANDOM; i++) { pieRGBA(screen, rx2[i], ry1[i], rr1[i], a1[i], a2[i], rr[i], rg[i], rb[i], ra[i]); } } time2=SDL_GetTicks(); /* Results */ SetClip(screen,0,0,WIDTH-1,HEIGHT-1); sprintf (titletext, "%.0f per sec",1000.0*(float)(NUM_RANDOM*repeat)/(float)(time2-time1)); stringRGBA (screen, 3*WIDTH/4-4*strlen(titletext),30-4,titletext,255,255,255,255); } void TestFilledPie(SDL_Surface *screen) { int i; char r,g,b; /* Create random points */ srand(time(NULL)); InitRandomPoints(); /* Draw A=255 */ SetClip(screen,0,60,WIDTH/2,60+(HEIGHT-80)/2); for (i=0; i<NUM_RANDOM; i++) { filledPieRGBA(screen, rx1[i], ry1[i], rr1[i], a1[i], a2[i], rr[i], rg[i], rb[i], 255); } /* Draw A=various */ SetClip(screen,WIDTH/2,60,WIDTH,60+(HEIGHT-80)/2); for (i=0; i<NUM_RANDOM; i++) { filledPieRGBA(screen, rx2[i], ry1[i], rr1[i], a1[i], a2[i], rr[i], rg[i], rb[i], ra[i]); } /* Draw A=various */ SetClip(screen,WIDTH/2,80+(HEIGHT-80)/2,WIDTH,HEIGHT); for (i=0; i<NUM_RANDOM; i++) { filledPieRGBA(screen, rx2[i], ry2[i], rr1[i], a1[i], a2[i], rr[i], rg[i], rb[i], ra[i]); } /* Draw Colortest */ SetClip(screen,0,80+(HEIGHT-80)/2,WIDTH/2,HEIGHT); for (i=0; i<NUM_RANDOM; i++) { if (rx1[i] < (WIDTH/6)) { r=255; g=0; b=0; } else if (rx1[i] < (WIDTH/3) ) { r=0; g=255; b=0; } else { r=0; g=0; b=255; } filledPieRGBA(screen, rx1[i], ry2[i], rr1[i], a1[i], a2[i], r, g, b, 255); } } void BenchmarkFilledPie(SDL_Surface *screen) { int i,j; int repeat; Uint32 time1, time2; char titletext[256]; /* Draw A=255 */ repeat=20; SetClip(screen,0,60,WIDTH/2,60+(HEIGHT-80)/2); time1=SDL_GetTicks(); for (j=0; j<repeat; j++) { for (i=0; i<NUM_RANDOM; i++) { filledPieRGBA(screen, rx1[i], ry1[i], rr1[i], a1[i], a2[i], rr[i], rg[i], rb[i], 255); } } time2=SDL_GetTicks(); /* Results */ SetClip(screen,0,0,WIDTH-1,HEIGHT-1); sprintf (titletext, "%.0f per sec",1000.0*(float)(NUM_RANDOM*repeat)/(float)(time2-time1)); stringRGBA (screen, WIDTH/4-4*strlen(titletext),30-4,titletext,255,255,255,255); /* Draw A=various */ repeat=5; SetClip(screen,WIDTH/2,60,WIDTH,60+(HEIGHT-80)/2); time1=SDL_GetTicks(); for (j=0; j<repeat; j++) { for (i=0; i<NUM_RANDOM; i++) { filledPieRGBA(screen, rx2[i], ry1[i], rr1[i], a1[i], a2[i], rr[i], rg[i], rb[i], ra[i]); } } time2=SDL_GetTicks(); /* Results */ SetClip(screen,0,0,WIDTH-1,HEIGHT-1); sprintf (titletext, "%.0f per sec",1000.0*(float)(NUM_RANDOM*repeat)/(float)(time2-time1)); stringRGBA (screen, 3*WIDTH/4-4*strlen(titletext),30-4,titletext,255,255,255,255); } void TestPolygon(SDL_Surface *screen) { int i; char r,g,b; /* Create random points */ srand(time(NULL)); InitRandomPoints(); /* Draw A=255 */ SetClip(screen,0,60,WIDTH/2,60+(HEIGHT-80)/2); for (i=0; i<(NUM_RANDOM-3); i += 3) { polygonRGBA(screen, &rx1[i], &ry1[i], 3, rr[i], rg[i], rb[i], 255); } /* Draw A=various */ SetClip(screen,WIDTH/2,60,WIDTH,60+(HEIGHT-80)/2); for (i=0; i<(NUM_RANDOM-3); i += 3) { polygonRGBA(screen, &rx2[i], &ry1[i], 3, rr[i], rg[i], rb[i], ra[i]); } /* Draw A=various */ SetClip(screen,WIDTH/2,80+(HEIGHT-80)/2,WIDTH,HEIGHT); for (i=0; i<(NUM_RANDOM-3); i += 3) { polygonRGBA(screen, &rx2[i], &ry2[i], 3, rr[i], rg[i], rb[i], ra[i]); } /* Draw Colortest */ SetClip(screen,0,80+(HEIGHT-80)/2,WIDTH/2,HEIGHT); for (i=0; i<(NUM_RANDOM-3); i += 3) { if (rx1[i] < (WIDTH/6)) { r=255; g=0; b=0; } else if (rx1[i] < (WIDTH/3) ) { r=0; g=255; b=0; } else { r=0; g=0; b=255; } rx1[i+1]=rx1[i]+rr1[i]; rx1[i+2]=rx1[i]; ry2[i+1]=ry2[i]; ry2[i+2]=ry2[i]+rr2[i]; polygonRGBA(screen, &rx1[i], &ry2[i], 3, r, g, b, 255); } } void BenchmarkPolygon(SDL_Surface *screen) { int i,j; int repeat; Uint32 time1, time2; char titletext[256]; /* Create random points */ srand(time(NULL)); InitRandomPoints(); /* Draw A=255 */ repeat=50; SetClip(screen,0,60,WIDTH/2,60+(HEIGHT-80)/2); time1=SDL_GetTicks(); for (j=0; j<repeat; j++) { for (i=0; i<NUM_RANDOM; i += 3) { polygonRGBA(screen, &rx1[i], &ry1[i], 3, rr[i], rg[i], rb[i], 255); } } time2=SDL_GetTicks(); /* Results */ SetClip(screen,0,0,WIDTH-1,HEIGHT-1); sprintf (titletext, "%.0f per sec",1000.0*(float)(((NUM_RANDOM-3)/3)*repeat)/(float)(time2-time1)); stringRGBA (screen, WIDTH/4-4*strlen(titletext),30-4,titletext,255,255,255,255); /* Draw A=various */ repeat=10; SetClip(screen,WIDTH/2,60,WIDTH,60+(HEIGHT-80)/2); time1=SDL_GetTicks(); for (j=0; j<repeat; j++) { for (i=0; i<NUM_RANDOM; i += 3) { polygonRGBA(screen, &rx2[i], &ry1[i], 3, rr[i], rg[i], rb[i], ra[i]); } } time2=SDL_GetTicks(); /* Results */ SetClip(screen,0,0,WIDTH-1,HEIGHT-1); sprintf (titletext, "%.0f per sec",1000.0*(float)(((NUM_RANDOM-3)/3)*repeat)/(float)(time2-time1)); stringRGBA (screen, 3*WIDTH/4-4*strlen(titletext),30-4,titletext,255,255,255,255); } void TestAAPolygon(SDL_Surface *screen) { int i; char r,g,b; /* Create random points */ srand(time(NULL)); InitRandomPoints(); /* Draw A=255 */ SetClip(screen,0,60,WIDTH/2,60+(HEIGHT-80)/2); for (i=0; i<(NUM_RANDOM-3); i += 3) { aapolygonRGBA(screen, &rx1[i], &ry1[i], 3, rr[i], rg[i], rb[i], 255); } /* Draw A=various */ SetClip(screen,WIDTH/2,60,WIDTH,60+(HEIGHT-80)/2); for (i=0; i<(NUM_RANDOM-3); i += 3) { aapolygonRGBA(screen, &rx2[i], &ry1[i], 3, rr[i], rg[i], rb[i], ra[i]); } /* Draw A=various */ SetClip(screen,WIDTH/2,80+(HEIGHT-80)/2,WIDTH,HEIGHT); for (i=0; i<(NUM_RANDOM-3); i += 3) { aapolygonRGBA(screen, &rx2[i], &ry2[i], 3, rr[i], rg[i], rb[i], ra[i]); } /* Draw Colortest */ SetClip(screen,0,80+(HEIGHT-80)/2,WIDTH/2,HEIGHT); for (i=0; i<(NUM_RANDOM-3); i += 3) { if (rx1[i] < (WIDTH/6)) { r=255; g=0; b=0; } else if (rx1[i] < (WIDTH/3) ) { r=0; g=255; b=0; } else { r=0; g=0; b=255; } rx1[i+1]=rx1[i]+rr1[i]; rx1[i+2]=rx1[i]; ry2[i+1]=ry2[i]; ry2[i+2]=ry2[i]+rr2[i]; aapolygonRGBA(screen, &rx1[i], &ry2[i], 3, r, g, b, 255); } } void BenchmarkAAPolygon(SDL_Surface *screen) { int i,j; int repeat; Uint32 time1, time2; char titletext[256]; /* Create random points */ srand(time(NULL)); InitRandomPoints(); /* Draw A=255 */ repeat=5; SetClip(screen,0,60,WIDTH/2,60+(HEIGHT-80)/2); time1=SDL_GetTicks(); for (j=0; j<repeat; j++) { for (i=0; i<NUM_RANDOM; i += 3) { aapolygonRGBA(screen, &rx1[i], &ry1[i], 3, rr[i], rg[i], rb[i], 255); } } time2=SDL_GetTicks(); /* Results */ SetClip(screen,0,0,WIDTH-1,HEIGHT-1); sprintf (titletext, "%.0f per sec",1000.0*(float)(((NUM_RANDOM-3)/3)*repeat)/(float)(time2-time1)); stringRGBA (screen, WIDTH/4-4*strlen(titletext),30-4,titletext,255,255,255,255); /* Draw A=various */ repeat=2; SetClip(screen,WIDTH/2,60,WIDTH,60+(HEIGHT-80)/2); time1=SDL_GetTicks(); for (j=0; j<repeat; j++) { for (i=0; i<NUM_RANDOM; i += 3) { aapolygonRGBA(screen, &rx2[i], &ry1[i], 3, rr[i], rg[i], rb[i], ra[i]); } } time2=SDL_GetTicks(); /* Results */ SetClip(screen,0,0,WIDTH-1,HEIGHT-1); sprintf (titletext, "%.0f per sec",1000.0*(float)(((NUM_RANDOM-3)/3)*repeat)/(float)(time2-time1)); stringRGBA (screen, 3*WIDTH/4-4*strlen(titletext),30-4,titletext,255,255,255,255); } void TestFilledPolygon(SDL_Surface *screen) { int i; char r,g,b; /* Create random points */ srand(time(NULL)); InitRandomPoints(); /* Draw A=255 */ SetClip(screen,0,60,WIDTH/2,60+(HEIGHT-80)/2); for (i=0; i<(NUM_RANDOM-3); i += 3) { filledPolygonRGBA(screen, &rx1[i], &ry1[i], 3, rr[i], rg[i], rb[i], 255); } /* Draw A=various */ SetClip(screen,WIDTH/2,60,WIDTH,60+(HEIGHT-80)/2); for (i=0; i<(NUM_RANDOM-3); i += 3) { filledPolygonRGBA(screen, &rx2[i], &ry1[i], 3, rr[i], rg[i], rb[i], ra[i]); } /* Draw A=various */ SetClip(screen,WIDTH/2,80+(HEIGHT-80)/2,WIDTH,HEIGHT); for (i=0; i<(NUM_RANDOM-3); i += 3) { filledPolygonRGBA(screen, &rx2[i], &ry2[i], 3, rr[i], rg[i], rb[i], ra[i]); } /* Draw Colortest */ SetClip(screen,0,80+(HEIGHT-80)/2,WIDTH/2,HEIGHT); for (i=0; i<(NUM_RANDOM-3); i += 3) { if (rx1[i] < (WIDTH/6)) { r=255; g=0; b=0; } else if (rx1[i] < (WIDTH/3) ) { r=0; g=255; b=0; } else { r=0; g=0; b=255; } rx1[i+1]=rx1[i]+rr1[i]; rx1[i+2]=rx1[i]; ry2[i+1]=ry2[i]; ry2[i+2]=ry2[i]+rr2[i]; filledPolygonRGBA(screen, &rx1[i], &ry2[i], 3, r, g, b, 255); } } void BenchmarkFilledPolygon(SDL_Surface *screen) { int i,j; int repeat; Uint32 time1, time2; char titletext[256]; /* Create random points */ srand(time(NULL)); InitRandomPoints(); /* Draw A=255 */ repeat=20; SetClip(screen,0,60,WIDTH/2,60+(HEIGHT-80)/2); time1=SDL_GetTicks(); for (j=0; j<repeat; j++) { for (i=0; i<NUM_RANDOM; i += 3) { filledPolygonRGBA(screen, &rx1[i], &ry1[i], 3, rr[i], rg[i], rb[i], 255); } } time2=SDL_GetTicks(); /* Results */ SetClip(screen,0,0,WIDTH-1,HEIGHT-1); sprintf (titletext, "%.0f per sec",1000.0*(float)(((NUM_RANDOM-3)/3)*repeat)/(float)(time2-time1)); stringRGBA (screen, WIDTH/4-4*strlen(titletext),30-4,titletext,255,255,255,255); /* Draw A=various */ repeat=5; SetClip(screen,WIDTH/2,60,WIDTH,60+(HEIGHT-80)/2); time1=SDL_GetTicks(); for (j=0; j<repeat; j++) { for (i=0; i<NUM_RANDOM; i += 3) { filledPolygonRGBA(screen, &rx2[i], &ry1[i], 3, rr[i], rg[i], rb[i], ra[i]); } } time2=SDL_GetTicks(); /* Results */ SetClip(screen,0,0,WIDTH-1,HEIGHT-1); sprintf (titletext, "%.0f per sec",1000.0*(float)(((NUM_RANDOM-3)/3)*repeat)/(float)(time2-time1)); stringRGBA (screen, 3*WIDTH/4-4*strlen(titletext),30-4,titletext,255,255,255,255); } void TestBezier(SDL_Surface *screen) { int i; char r,g,b; /* Create random points */ srand(time(NULL)); InitRandomPoints(); /* Draw A=255 */ SetClip(screen,0,60,WIDTH/2,60+(HEIGHT-80)/2); for (i=0; i<(NUM_RANDOM-3); i += 3) { bezierRGBA(screen, &rx1[i], &ry1[i], 3, 100, rr[i], rg[i], rb[i], 255); } /* Draw A=various */ SetClip(screen,WIDTH/2,60,WIDTH,60+(HEIGHT-80)/2); for (i=0; i<(NUM_RANDOM-3); i += 3) { bezierRGBA(screen, &rx2[i], &ry1[i], 3, 100, rr[i], rg[i], rb[i], ra[i]); } /* Draw A=various */ SetClip(screen,WIDTH/2,80+(HEIGHT-80)/2,WIDTH,HEIGHT); for (i=0; i<(NUM_RANDOM-3); i += 3) { bezierRGBA(screen, &rx2[i], &ry2[i], 3, 100, rr[i], rg[i], rb[i], ra[i]); } /* Draw Colortest */ SetClip(screen,0,80+(HEIGHT-80)/2,WIDTH/2,HEIGHT); for (i=0; i<(NUM_RANDOM-3); i += 3) { if (rx1[i] < (WIDTH/6)) { r=255; g=0; b=0; } else if (rx1[i] < (WIDTH/3) ) { r=0; g=255; b=0; } else { r=0; g=0; b=255; } rx1[i+1]=rx1[i]+rr1[i]; rx1[i+2]=rx1[i]; ry2[i+1]=ry2[i]; ry2[i+2]=ry2[i]+rr2[i]; bezierRGBA(screen, &rx1[i], &ry2[i], 3, 100, r, g, b, 255); } } void BenchmarkBezier(SDL_Surface *screen) { int i,j; int repeat; Uint32 time1, time2; char titletext[256]; /* Create random points */ srand(time(NULL)); InitRandomPoints(); /* Draw A=255 */ repeat=20; SetClip(screen,0,60,WIDTH/2,60+(HEIGHT-80)/2); time1=SDL_GetTicks(); for (j=0; j<repeat; j++) { for (i=0; i<NUM_RANDOM; i += 3) { bezierRGBA(screen, &rx1[i], &ry1[i], 3, 100, rr[i], rg[i], rb[i], 255); } } time2=SDL_GetTicks(); /* Results */ SetClip(screen,0,0,WIDTH-1,HEIGHT-1); sprintf (titletext, "%.0f per sec",1000.0*(float)(((NUM_RANDOM-3)/3)*repeat)/(float)(time2-time1)); stringRGBA (screen, WIDTH/4-4*strlen(titletext),30-4,titletext,255,255,255,255); /* Draw A=various */ repeat=10; SetClip(screen,WIDTH/2,60,WIDTH,60+(HEIGHT-80)/2); time1=SDL_GetTicks(); for (j=0; j<repeat; j++) { for (i=0; i<NUM_RANDOM; i += 3) { bezierRGBA(screen, &rx2[i], &ry1[i], 3, 100, rr[i], rg[i], rb[i], ra[i]); } } time2=SDL_GetTicks(); /* Results */ SetClip(screen,0,0,WIDTH-1,HEIGHT-1); sprintf (titletext, "%.0f per sec",1000.0*(float)(((NUM_RANDOM-3)/3)*repeat)/(float)(time2-time1)); stringRGBA (screen, 3*WIDTH/4-4*strlen(titletext),30-4,titletext,255,255,255,255); } /* ======== Main Program ======= */ int main(int argc, char *argv[]) { SDL_Surface *screen; Uint32 videoflags= SDL_DOUBLEBUF; Uint32 video_bits=0; int done; SDL_Event event; int oldprim, curprim; /* Initialize SDL */ if ( SDL_Init(SDL_INIT_VIDEO|SDL_INIT_JOYSTICK) < 0 ) { fprintf(stderr, "Couldn't initialize SDL: %s\n",SDL_GetError()); exit(1); } #if defined(DREAMCAST) || defined(GP32) videoflags |= SDL_FULLSCREEN; video_bits=16; #ifdef GP32 x_gp32_SetCPUSpeed_133(); #else #endif #endif if ( (screen=SDL_SetVideoMode(WIDTH,HEIGHT,video_bits,videoflags)) == NULL ) { fprintf(stderr, "Couldn't set %ix%i video mode: %s\n",WIDTH,HEIGHT,SDL_GetError()); exit(2); } /* Use alpha blending */ SDL_SetAlpha(screen, SDL_SRCALPHA, 0); /* Wait for a keystroke */ done = 0; oldprim = 0; curprim = 1; SDL_JoystickEventState(SDL_ENABLE); SDL_JoystickOpen(0); SDL_Delay(333); while ( SDL_PollEvent(&event) ) SDL_Delay(50); while ( !done ) { /* Draw on screen if primitive changes */ if (curprim != oldprim) { ClearScreen(screen, "Titletext"); /* Draw according to curprim setting */ switch (curprim) { /* Pixels */ case 1: ClearScreen(screen, "Pixel"); TestPixel(screen); BenchmarkPixel(screen); /* Next primitive */ oldprim=curprim; break; /* Horizontal Lines */ case 2: ClearScreen(screen, "Hline"); TestHline(screen); BenchmarkHline(screen); /* Next primitive */ oldprim=curprim; break; /* Vertical Lines */ case 3: ClearScreen(screen, "Vline"); TestVline(screen); BenchmarkVline(screen); /* Next primitive */ oldprim=curprim; break; /* Rectangles */ case 4: ClearScreen(screen, "Rectangle"); TestRectangle(screen); BenchmarkRectangle(screen); /* Next primitive */ oldprim=curprim; break; /* --- Box */ case 5: ClearScreen(screen, "Box"); TestBox(screen); BenchmarkBox(screen); /* Next primitive */ oldprim=curprim; break; /* --- 2x2 Box */ case 6: ClearScreen(screen, "2x2 Box"); TestBoxTwo(screen); BenchmarkBoxTwo(screen); /* Next primitive */ oldprim=curprim; break; /* --- Lines */ case 7: ClearScreen(screen, "Line"); TestLine(screen); BenchmarkLine(screen); /* Next primitive */ oldprim=curprim; break; /* --- AA Line */ case 8: ClearScreen(screen, "Anti-Aliased Line"); TestAALine(screen); BenchmarkAALine(screen); /* Next primitive */ oldprim=curprim; break; /* --- Circle */ case 9: ClearScreen(screen, "Circle"); TestCircle(screen); BenchmarkCircle(screen); /* Next primitive */ oldprim=curprim; break; /* --- AA Circle */ case 10: ClearScreen(screen, "AA Circle"); TestAACircle(screen); BenchmarkAACircle(screen); /* Next primitive */ oldprim=curprim; break; /* --- Filled Circle */ case 11: ClearScreen(screen, "Filled Circle"); TestFilledCircle(screen); BenchmarkFilledCircle(screen); /* Next primitive */ oldprim=curprim; break; /* --- Ellipse */ case 12: ClearScreen(screen, "Ellipse"); TestEllipse(screen); BenchmarkEllipse(screen); /* Next primitive */ oldprim=curprim; break; /* --- AA Ellipse */ case 13: ClearScreen(screen, "AA Ellipse"); TestAAEllipse(screen); BenchmarkAAEllipse(screen); /* Next primitive */ oldprim=curprim; break; /* --- Filled Ellipse */ case 14: ClearScreen(screen, "Filled Ellipse"); TestFilledEllipse(screen); BenchmarkFilledEllipse(screen); /* Next primitive */ oldprim=curprim; break; /* --- Pie */ case 15: ClearScreen(screen, "Pie"); TestPie(screen); BenchmarkPie(screen); /* Next primitive */ oldprim=curprim; break; /* --- Filled Pie */ case 16: ClearScreen(screen, "Filled Pie"); TestFilledPie(screen); BenchmarkFilledPie(screen); /* Next primitive */ oldprim=curprim; break; /* --- Polygon */ case 17: ClearScreen(screen, "Polygon"); TestPolygon(screen); BenchmarkPolygon(screen); /* Next primitive */ oldprim=curprim; break; /* --- AA-Polygon */ case 18: ClearScreen(screen, "AA-Polygon"); TestAAPolygon(screen); BenchmarkAAPolygon(screen); /* Next primitive */ oldprim=curprim; break; /* ---- Filled Polygon */ case 19: ClearScreen(screen, "Filled Polygon"); TestFilledPolygon(screen); BenchmarkFilledPolygon(screen); /* Next primitive */ oldprim=curprim; break; /* ---- Bezier Curve */ case 20: ClearScreen(screen, "Bezier Curve"); TestBezier(screen); BenchmarkBezier(screen); /* Next primitive */ oldprim=curprim; break; /* --- Reset */ default: oldprim=0; curprim=1; break; } /* Show */ SDL_Flip(screen); } /* Slow down polling */ SDL_Delay(100); /* Check for events */ while ( SDL_PollEvent(&event) ) switch (event.type) { case SDL_MOUSEBUTTONDOWN: case SDL_KEYDOWN: case SDL_QUIT: done = 1; break; default: break; } { static int cuenta=1; if (!(cuenta%10)) curprim++; cuenta++; } } return(0); }